Всем привет!
Кто-нибудь может объяснить, почему результаты работы этого кода именно такие?
set -e
args=("$@")
dd=0
dc=0
dm=0
declare -a array
for opt in $args; do
if [[ "$opt" -eq "-dd" ]]; then
dd=1
echo "dd"
elif [[ "$opt" -eq "-dc" ]]; then
dc=1
echo "dc"
elif [[ "$opt" -eq "-dm" ]]; then
dm=1
echo "dm"
else
array[${#array[*]}]="$opt"
echo "$opt"
echo ${array[@]}
fi
done
$ ./myscript -dm -dc -dd arg1 arg2
dd
Ожидалось, что скрипт прочитает все флаги, которые ему переданы и все остальные аргументы скинет в другой массив, но, как видно, после первого if цикл заканчивается.