따라서 다음과 같은 작업을 수행하는 스크립트를 만들어야 합니다.
./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