linux bash оператор if внутри цикла for [дубликат]

Чтобы добавить указанный текст в строку в файле - , если эта строка является единственным, который начинается с mynetworks , вы можете сделать это:

sed --in-place '/^mynetworks/s_.*_& 0.0.0.0/0_' /path/to/file
3
16.01.2016, 01:40
2 ответа

Ваш , если оператор неверен, он должен быть , если [$ i! = 10] . Пробелы вокруг [ являются обязательными, и ваши переменные должны иметь знак $ перед ним, если вы их читаете.

for i in {1..30}; do if [ $i != 10 ]; then echo "hello $i"; fi; done
7
27.01.2020, 21:12

if проверяет команды. if [...] работает, потому что [ является командой ( / usr / bin / [ или встроенная функция (обычно последняя)), которая ожидает ] в качестве последнего аргумента (просто для того, чтобы все выглядело красиво). Но кроме этого, он принимает параметры, которые необходимо передавать как обычно - в виде списка, разделенного пробелами.

Если вы не хотите использовать [, вы можете сделать: if test $ i! = 10; затем , и он будет вести себя точно так же.

В качестве альтернативы, есть [ в bash , это правильная грамматическая конструкция, которая создает отдельный контекст, что позволяет вам использовать такие вещи, как > или && в нем с семантикой, отличной от того, что они означают при обычном вызове команды ( [ и test - это просто вызовы команд), но вам все равно нужны пробелы вокруг [[ и ]] .

0
27.01.2020, 21:12

Теги

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