したがって、次のタスクを実行するスクリプトを作成する必要があります。
./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
考えられる答えの1つ:
#!/bin/bash
k=0;
while [ $# -gt 0 ];
do
let k=k+1
echo "$k $1"
shift
done
exit 0