Скрипт bash, который содержит
for i in {a,b}-{1,2}; do
echo $i;
done
печать
a-1
a-2
b-1
b-2
когда выполнено. Это то, что я ожидал - поскольку {a,b}
конструкция расширяется.
Однако когда (другой) скрипт содержит
v={a,b}-{1,2}
echo $v
это печатает
{a,b}-{1,2}
это не то, что я ожидал. Я ожидал, что это напечатает a-1 a-2 b-1 b-2
. Очевидно, что {a,b}
конструкция не расширена.
Я могу заставить его расширяться так
v=$(echo {a,b}-{1,2})
На основании этих наблюдений у меня есть два вопроса: 1) когда {a,b}
расширилась конструкция? 2) является $(echo {a,b}-{1,2})
ли предпочтительным способом вызвать расширение при необходимости?
v=a-1 a-2
означает, assign 'a-1' to variable v and run 'a-2'
v=(a-1 a-2)
присваивает массив переменной v
. v+=(b-1 b-2)
добавляет к нему
=
. Например,v=a-1 a-2
не будет работать.