Мне нужно объяснение о следующем поведении массивов в сценариях оболочки:
Представьте, что дано следующее:
arber@host ~> ls
fileA fileB script.sh
Теперь я могу выполнять следующие команды:
arber@host ~> ARR=($(ls -d file*))
arber@host ~> echo ${ARR[0]} # start index 0
arber@host ~> echo ${ARR[1]} # start index 1
fileA
arber@host ~> echo ${ARR[2]} # start index 2
fileB
Но когда я делаю это через script.sh , он ведет себя по-другому (Start Index = 0):
arber@host ~> cat script.sh
#!/bin/bash
ARR=($(ls -d file*))
# get length of an array
aLen=${#ARR[@]}
# use for loop read all items (START INDEX 0)
for (( i=0; i<${aLen}; i++ ));
do
echo ${ARR[$i]}
done
Вот результат:
arber@host ~> ./script.sh
fileA
fileB
Я использую Ubuntu 18.04 LTS и zsh .Может кто-нибудь объяснить это?