我试图理解为什么这个循环不会为提供给脚本的每个参数打印一个数字。
#!/bin/bash
for i in {1..$#}; do
echo $i
done
相反,当提供例如 3 个参数时,它会输出
{1..3}
该表达式{}
不接受变量。
为此,您需要使用例如seq
. 以下将使它::
#!/bin/bash
for i in $(seq 1 $#); do
echo $i
done
注意$()
相当于``
。也就是说,它执行命令替换。例如:
$ d=$(echo "hello")
$ echo $d
hello
您可以在Shell Programming: What's the difference between $(command) andcommand
中查看更多信息。
$ ./a
$
$ ./a a b c
1
2
3