Поскольку вы уже используете раскрытие фигурных скобок, вы также можете использовать его здесь.
Либо расширение генерирует последовательность чисел (..
, литеральную):
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
Используйте
selected_projects+="$selected_project"
вместо
$selected_projects+="$selected_project
Присвоение переменной в bash никогда не содержит $
в начале имени переменной.
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