【发布时间】:2013-09-24 20:23:51
【问题描述】:
我试图理解为什么这个循环不会为提供给脚本的每个参数打印一个数字。
#!/bin/bash
for i in {1..$#}; do
echo $i
done
相反,当提供时,例如3 个参数,它输出
{1..3}
【问题讨论】:
我试图理解为什么这个循环不会为提供给脚本的每个参数打印一个数字。
#!/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) and command查看更多信息。
$ ./a
$
$ ./a a b c
1
2
3
【讨论】:
$ which seq 返回类似 /usr/bin/seq 的内容。
【讨论】: