Как выполнить команду под оператором if в сценарии оболочки при ожидаемом условии?

В итоге у меня получилось нечто, что кажется грубым, если есть лучший способ, пожалуйста, опубликуйте его:

#!/bin/sh

DONE=false
until $DONE; do
    for i in $(seq 1 $2); do 
        read line || DONE=true;
        [ -z "$line" ] && continue;
        lines+=$line$'\n';
    done
    sql=${lines::${#lines}-10}
    (cat "Header.sql"; echo "$sql";) | sqlcmd
    #echo "--- PROCESSED ---";
    lines=;
done < $1

Запустите с помощью ./insert.sh "File.sql" 100, где 100 - это количество строк, обрабатываемых за один раз.

0
09.01.2019, 09:25
1 ответ

Вы используете -eqдля сравнения чисел. Ваш =при сравнении строк

send "if [ `ps -ef | grep ttyS1 | sed -n 1p | cut -d ' ' -f 2` = 'ttyS1' ]; then
not_found='false'
else 
not_found='true'
fi\r"

И вы можете использовать двойные кавычки, поскольку они уже используются. Вы также можете оставить строку ttyS1без кавычек

0
28.01.2020, 04:04

Теги

Похожие вопросы