Я привел три примера, первые два связаны с циклами , а
- с циклами до
. Первый пример использует синтаксис, очень близкий к вашему оригиналу, третий немного сложнее, поскольку он использует динамические настройки для максимума счетчика и массив для итерации, хотя слова (аргументы, разделенные пробелами) передаются по одному. Это простые примеры, предназначенные только для ответа на ваши прямые вопросы на языке сценариев Bash, если вам нужны более сложные примеры, см. Ссылку, прикрепленную к сценарию, который я поддерживаю на GitHub, для примеров вложенных циклов среди прочая техника-волшебство.
#!/usr/bin/env bash
let _counter=0
let _max="5"
while [ "${_counter}" -lt "${_max}" ]; do
echo "${_counter}"
let _counter=++
done
unset _counter
unset _max
./example_one.sh
1
2
3
4
5
#!/usr/bin/env bash
_arr_args=( "${@}" )
let _counter=0
let _max="${#_arr_args[@]}"
while [ "${_counter}" -lt "${_max}" ]; do
echo "${_arr_args[${_counter}]}"
let _counter=++
done
unset _counter
unset _max
./example_two.sh "$(seq 1 5)"
## same output as example one
#!/usr/bin/env bash
_arr_args=( "${@}" )
let _counter=0
let _max="${#_arr_args[@]}"
until [ "${_counter}" = "${_max}" ]; do
echo "${_arr_args[${_counter}]}"
let _counter=++
done
unset _counter
unset _max
./example_three.sh "$(seq 1 5)"
## same output as example one
shellcheck
, он доступен в большинстве дистрибутивов и в исходной форме от его авторов и интегрирован в Code Climate с помощью GitHub. bash
! = sh
есть сходства, но они разные, лично я считаю bash лучшим выбором, потому что он с меньшей вероятностью даст сбой при использовании сценария sh, где as shell будет делать странные вещи с синтаксисом bash.