sh 스크립트에서 두 변수를 반복하는 방법은 무엇입니까?

sh 스크립트에서 두 변수를 반복하는 방법은 무엇입니까?

커널 2.6.x 사용

sh(bash, zsh 등 아님)를 사용하여 다음 변수를 사용하여 아래 결과를 어떻게 스크립팅할 수 있습니까?

VAR1="abc def ghi"
VAR2="1 2 3"
CONFIG="$1"

for i in $VAR1; do
   for j in $VAR2; do
      [ "$i" -eq "$j" ] && continue
   done
command $VAR1 $VAR2
done

원하는 결과:

command abc 1
command def 2
command ghi 3

답변1

한 가지 방법은 다음과 같습니다.

#! /bin/sh

VAR1="abc def ghi"
VAR2="1 2 3"

fun()
{
    set $VAR2
    for i in $VAR1; do
        echo command "$i" "$1"
        shift
    done
}

fun

산출:

command abc 1
command def 2
command ghi 3

답변2

변종사토 카츠라의 답장(여기에는 독립형 기능이 있습니다):

func () {
    var=$1
    set -- $2

    for arg1 in $var; do
        printf 'command %s %s\n' "$arg1" "$1" # or  cmd "$arg1" "$1" directly
        shift
    done
}

func "abc def ghi" "1 2 3"

다음은 작동하지만 해당 스크립트의 위치 매개변수를 재정의합니다.

var1="abc def ghi"
var2="1 2 3"

set -- $var2
for arg1 in $var1; do
    printf 'command %s %s\n' "$arg1" "$1"
    shift
done

답변3

아래는 해결 방법 중 하나입니다.

#!/bin/sh
var1="a b c"
var2="1 2 3"
set -- $var2
for i in $var1
do
    echo $i $1
    shift
done

관련 정보