Bash Функция, которая проверяет, есть ли текст в файле и добавляет текст, если это не так - PullRequest
0 голосов
/ 27 марта 2020

Обратите внимание, что на этот вопрос был дан полный ответ в моем следующем вопросе: Я продолжаю получать host = dynamici c при вводе пути к файлу в bash функцию

2018 : Обучение промежуточной пневматике в Hyte c Holdings

Я пытаюсь создать функцию, которая будет проверять, содержит ли файл текст.

Если файл уже содержит этот текст, функция должна добавьте текст в файл.

#!/bin/bash
#Function that checks if text (ARGV1) is in a document (ARGV2). Please make ARGV1 a an array of strings, with each new line a new entry in the array.
function docCheckNReplace {
    local text=$1
    local document=$2
    local textLen=${#text[@]}
    for i in {0..$(($textLen - 1))..1}; do
        echo $i
        if grep -q ${test[i]} $document; then
            echo ${test[i]} 'was found in' $document
        else
            echo ${test[i]} >> $document
        fi
    done
}

Это то, что я до сих пор придумал.

Linux зависает, когда я запускаю его, поэтому я не могу понять, где проблема в том.

Кто-нибудь получил какие-либо предложения?

Спасибо:)

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Нам не нужно беспокоиться об индексации массива; мы можем просто обработать текст построчно:

    while read i; do
        echo $i
        if grep -q "$i" $document; then
            echo "$i" 'was found in' $document
        else
            echo "$i" >> $document
        fi
    done <<<$1
0 голосов
/ 27 марта 2020

Вы должны проверить вывод echo "$i" вместо echo $i.

Как вы думаете, что должно быть выводом {0..5..1}?

Вы не можете использовать переменные в оператор дальности Вместо этого используйте seq.

И индексация массива работает следующим образом: ${test[$i]}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...