Кстати, если эффективность имеет большое значение, объявите переменную цикла как целочисленную, добавив инструкцию declare -i i в начало сценария, это позволит избежать ресурсоемких преобразований из строки в число и обратно.
Также источником значений для цикла for могут быть результаты выполнения команд — отдельных или их конвейеров:
for arg in $(some cmd or other | sort -u)
Вот еще несколько примеров:
for arg in $(cat /some/file)
for arg in $(< /some/file) # Faster than shelling out to cat
for pic in $(find . -name '*.jpg')
for val in $(find . -type d | LC_ALL=C sort)
# Пример 2
$ echo 1 || echo 2 && echo 3
1
3
$
Обратите внимание, что крайняя левая команда выполняется всегда, независимо от следующего за ней оператора: порядок вычислений определяется не приоритетом операторов, а их последовательностью.
Итак, две команды, разделенные символами &&, похожи на оператор if и его ветку then; две команды, разделенные символами ||, похожи на оператор if и его ветку else.
поэтому возникает вопрос: когда использовать их, а когда сокращенные конструкции? Ответ: все зависит от удобочитаемости.
Мы рекомендуем использовать дополнительную точку с запятой, не забывая о пробеле между ней и закрывающей фигурной скобкой.
Мы советуем по возможности всегда использовать двойные квадратные скобки.
ения переменной DIR от нуля. Если переменная имеет некоторое значение, то есть длина этого значен
Если вам потребуются регулярные выражения, то вместо case используйте последовательность операторов if/then/else.
Шаблоны — это не регулярные выражения