Скрипт 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не будет работать.