有人可以解释这两个代码块之间的区别吗?我认为 Block #2 会输出与 Block #1 相同的输出,但事实并非如此。有人可以解释为什么吗?
# ./arguments.sh hello my name is X
Run Code Online (Sandbox Code Playgroud)
第 1 块
for i
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
输出:
hello
my
name
is
X
Run Code Online (Sandbox Code Playgroud)
块 #2
args=$#
for (( i=1; i<=$args; i+=1 ))
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
输出:
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
第一个块(隐式)遍历命令行参数 "$@"
for i in "$@" # same as your "for i"
do
echo "$i"
done
Run Code Online (Sandbox Code Playgroud)
第二个块显式迭代参数的数量,打印索引:
args=$# # number of command line args
for (( i=1; i<=$args; i+=1 )) # loop from 1 to N (where N is number of args)
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
鉴于,根据您的示例,$#
是 5,那么$i
变量将采用值1
, 2
, 3
, 4
, 5
。
正如在另一个(现已删除)答案中指出的那样,您可以通过索引引用命令行参数,如下所示:
args=$#
for (( i=1; i<=$args; i++ ))
do
echo "$i - ${!i}"
done
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8229 次 |
最近记录: |