커널 2.6.x 사용
GNU bash, 버전 4.3.42(1)-릴리스(arm-openwrt-linux-gnu)
Bash 스크립트에서 다음 변수를 사용하여 다음 결과를 생성하는 for 루프를 작성하려면 어떻게 해야 합니까?
command option option abc option 10
command option option def option 20
VAR1=“abc 정의”
VAR2="10 20"
$VAR1을 반복할 수 있지만 $VAR2를 반복하는 방법을 모르겠습니다.
for i in $VAR1; do
command option option "$VAR1" option "$VAR2"
done
명령줄을 두 개의 문자열로 분할하고 각각을 반복한 다음 연결해야 합니까?
배열과 함께 count 변수를 사용하는 것은 어떻습니까? 예를 들어...
count=1
echo ${VAR1["$count"]}
while 루프가 작동하면 변수를 계산할 수 있나요?
답변1
이건 어때:
arr1=(abc def)
arr2=(10 20)
그런 다음:
for (( i=0; i<${#arr1[@]}; i++ )); do echo "${arr1[i]} ${arr2[i]}"; done
abc 10
def 20
귀하의 경우 echo 문은 다음과 같습니다.
for (( i=0; i<${#arr1[@]}; i++ )); do
echo "command option option ${arr1[i]} option ${arr2[i]}"
done
command option option abc option 10
command option option def option 20
바라보다여기예를 들어, bash의 C 스타일 for 루프입니다.
답변2
다음을 사용하는 것이 더 쉽습니다 zsh
.
$ a=(a b c) b=(1 2 3)
$ for i j (${a:^b}) echo "i: $i, j: $j"
i: a, j: 1
i: b, j: 2
i: c, j: 3
${a:^b}
는 배열 압축 연산자입니다( a
, 1
, b
, 2
, c
, 위의 로 확장됨 3
).
$VAR1
POSIX와 유사한 셸 (예: @maulinglawns의 답변에 대한 설명을 기반으로 사용하는 것으로 보이는 busybox ) 에서 분할+glob 연산자가 적용되는 단어를 반복하려는 경우 $VAR2
위치 인수를 사용할 수 있습니다.sh
VAR1='a b c'
VAR2='1 2 3'
set -- $VAR1
for j in $VAR2; do
echo "i: $1, j: $j"
shift
done