Bash: Как объявить пустой массив, а затем добавить к нему переменные - PullRequest
0 голосов
/ 31 марта 2020

Я надеялся, что добрый человек, более умный, чем я, мог бы помочь мне здесь.

Я работаю над сценарием Bash, и в нем есть for l oop, который будет go вокруг неизвестного / неопределенного числа раз.

Теперь в этом for l oop будет значение, присвоенное переменной. Давайте назовем эту переменную: $var1

Каждый раз, когда выходит l oop (и я никогда не узнаю, сколько раз он идет), я бы хотел присвоить значение внутри $var1 массиву, медленно наращивая массив, как он идет. Давайте назовем массив $arr

Это то, что у меня пока есть:

for i in $( seq 0 $unknown ); do
    ...
    some commands that will make $var1 change...
    ...

    arr=("${arr[@]}" "$var1")
done

Однако, когда я хочу отобразить или использовать значения в массиве $arr, я получаю нет результатов

Может быть, кто-то любезно поможет мне в правильном направлении?

Я был бы очень признателен.

1 Ответ

1 голос
/ 31 марта 2020

Вы объявляете и добавляете в массив bash следующее:

declare -a  arr       # or arr=()
arr+=("item1")
arr+=("item2")

Просто так.

После выполнения этого кода следующие утверждения (среди прочих) верны:

${arr[@]}  == item1 item2
${#arr[@]} == 2
${arr[1]}  == item2

С точки зрения предоставленного вами кода вы должны использовать:

declare -a arr
for i in $( seq 0 $unknown ); do
    ...
    some commands that will make $var1 change...
    ...

    arr+=("$var1")
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...