所以我必须创建一个执行类似以下操作的脚本:
./scriptname.sh 1 2 4 carrot apple
1. 1
2. 2
3. 4
4. carrot
5. apple
无论我给出多少参数,都将它们显示在计数器中。
我尝试这样做,但它不起作用:
#!/bin/bash
k=0;
while [$k -lt $#]
do
k=$((k+1))
done
echo "$k"
exit 0
答案1
你的 while 循环永远不会触及传递的参数,它只是使用$#
参数总数的变量 - 而不是参数本身。
如果给我这个任务,我会做这样的事情:
#!/bin/bash
# Get no of args
noArgs=$#
# Save arguments in array
myArr=("$@")
# Loop the array
for ((i=0; i<$noArgs; i++)); do
echo $((i+1)). ${myArr[$i]}
done
exit 0
举几个例子:
./printArgs.sh foo bar baz
1. foo
2. bar
3. baz
./printArgs.sh 1 2 napalm death
1. 1
2. 2
3. napalm
4. death
./printArgs.sh seasons in the abyss
1. seasons
2. in
3. the
4. abyss
答案2
一个可能的答案:
#!/bin/bash
k=0;
while [ $# -gt 0 ];
do
let k=k+1
echo "$k $1"
shift
done
exit 0