Чтобы добавить указанный текст в строку в файле - , если эта строка является единственным, который начинается с mynetworks
, вы можете сделать это:
sed --in-place '/^mynetworks/s_.*_& 0.0.0.0/0_' /path/to/file
Ваш , если оператор
неверен, он должен быть , если [$ i! = 10]
. Пробелы вокруг [
являются обязательными, и ваши переменные должны иметь знак $
перед ним, если вы их читаете.
for i in {1..30}; do if [ $i != 10 ]; then echo "hello $i"; fi; done
if
проверяет команды.
if [...]
работает, потому что [
является командой ( / usr / bin / [
или встроенная функция (обычно последняя)), которая ожидает ]
в качестве последнего аргумента (просто для того, чтобы все выглядело красиво). Но кроме этого, он принимает параметры, которые необходимо передавать как обычно - в виде списка, разделенного пробелами.
Если вы не хотите использовать [
, вы можете сделать:
if test $ i! = 10; затем
, и он будет вести себя точно так же.
В качестве альтернативы, есть [
в bash , это правильная грамматическая конструкция, которая создает отдельный контекст, что позволяет вам использовать такие вещи, как >
или &&
в нем с семантикой, отличной от того, что они означают при обычном вызове команды ( [
и test
- это просто вызовы команд), но вам все равно нужны пробелы вокруг [[
и ]]
.