Почему у меня не работает $ARRAY+=$var?

Поскольку вы уже используете раскрытие фигурных скобок, вы также можете использовать его здесь.

Либо расширение генерирует последовательность чисел (.., литеральную):

for i in {1..30}; do
    paste./directory"$i"/table{1..20}.txt >./merged_tables/tables_directory"$i".txt
done 

Или перечислите их вручную (заполните поле...):

for i in {1..30}; do
    paste./directory"$i"/table{1,2,...,20}.txt >./merged_tables/tables_directory"$i".txt
done 

То есть, если вы не просто хотите, чтобы все файлы в каталоге соответствовали шаблону:

for i in {1..30}; do
    paste./directory"$i"/table*.txt >./merged_tables/tables_directory"$i".txt
done 
0
19.06.2020, 22:36
2 ответа

Используйте

selected_projects+="$selected_project"

вместо

$selected_projects+="$selected_project

Присвоение переменной в bash никогда не содержит $в начале имени переменной.

4
18.03.2021, 23:26
selected_projects=()
$selected_projects+="$selected_project"

При присвоении переменных в оболочке не используется знак $с левой стороны, он используется только при расширении значения переменной. Это включает в себя добавление +=. Ваше другое задание было правильным.

Кроме того, поскольку вы инициализировали selected_projectsкак массив, вы, вероятно, захотите использовать его таким. Чтобы добавить значение в массив, вам также нужно использовать круглые скобки в присваивании добавления. Таким образом, это добавит новый элемент кselected_projects:

selected_projects+=("$selected_project")

Без круглых скобок присваивание работает как неиндексированная ссылка на массив :оно обращается к элементу с индексом 0. Например. это печатаетfoobar foobar:

a=(); a+=foo; a+=bar; echo ${a[0]} $a
3
18.03.2021, 23:26

Теги

Похожие вопросы