+=
оператор появился в версии 3.1 Bash.
В более старых версиях, если массив не является разреженным, можно или присвоить элементу после последнего элемента массива:
NODES[${#NODES[@]}]="$WAS_IP"
При добавлении новых значений в одном определенном месте можно использовать отдельную переменную счетчика:
NODES=()
NODES_length=0
NODES[NODES_length++]="$WAS_IP"
Но это просто умеренно быстрее, чем выяснение у длины массива с ${#NODES[@]}
.
Или можно присвоить целый массив существующим элементам и новому:
NODES=("${NODES[@]}" "$WAS_IP")
Само собой разумеется, лучше избегайте этого последнего. Если массив был первоначально разреженным, индексы массива изменятся после того присвоения.
Вы можете ввести:
$ cat very-long-filename.ext1Ctrl+WCtrl+Y>Ctrl+YBackspace2
Или:
$ cat very-long-filename.ext1Ctrl+WCtrl+Y>Ctrl+YBackspace2
Или:
$ cat very-long-filename.com. Ctrl+WCtrl+Yext1>Ctrl+Yext2
Чтобы по-настоящему использовать brace-расширение, обратите внимание, что:
cat a.ext1 > a.ext2
Можно также написать:
cat > a.ext2 a.ext1
Однако вы не можете сделать:
cat > a.ext{2,1}
Однако, вы можете сделать:
eval cat \> a.ext{2,1}
Используйте функцию оболочки
xyx () { cat "$1".$2 > "$1".$3; }
, затем
xyz fie foo fum
развернется до
cat fee.foo > fee.fum