Bash 脚本显示参数并为它们创建一个计数器

Bash 脚本显示参数并为它们创建一个计数器

所以我必须创建一个执行类似以下操作的脚本:

./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

相关内容