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

관련 정보