我有以下脚本:
FOOS=foo{1..5}
for i in `echo $FOOS` do
echo bar
done
现在我(认为我)明白大括号扩展仅适用于文字 - 因此是回声 - 但所有这一切似乎只是将一个打印bar
到控制台。为什么(字符串/大括号扩展不起作用)?
我期望发生的是:
foo{1..5}
将表示扩展的字符串 ( ) 分配给变量FOOS
- 替代
$FOOS
,所以我基本上已经得到了for i in 'echo foo{1..5}' do
(看起来我无法在这里逃避反引号) - 执行 echo,所以我现在有了
for i in foo1 foo2 foo3 foo4 foo5 do
- 执行 for,打印
bar
五次到控制台输出 - 不只是
bar
在屏幕上打印一个作为唯一的输出:-)
答案1
1.
FOO=$(echo foo{1..5})
但更好的是使用数组
FOO=(foo{1..5})
2.
echo ${FOO[*]}
4.
for i in {1..5}
do
echo bar
done
或者
for i in $(seq 5)
do
echo bar
done