변수에 여러 옵션을 보내는 방법

변수에 여러 옵션을 보내는 방법

세 개의 추가 변수를 생성하는 변수 배열에 대해 루프를 실행하고 있습니다.

for foo in ${bar[@]};
    do bar1=$(echo $foo | awk '{print$1}');
       bar2=$(echo $foo | awk '{print$2}');
       bar3=$(echo $foo | awk '{print$3}');
done

그러나 루프가 완료되면 새로 생성된 세 개의 변수가 배열 자체가 되어야 하며, for 루프를 실행할 수도 있습니다.

for foo in ${bar1[@]}
    do echo $foo
done

^^^^여러 줄이 표시되어야 합니다.

누구든지 이것을 달성할 수 있는 방법을 제안할 수 있습니까?

답변1

사용

      bar1+=($(echo $foo | awk '{print$1}'))

즉, 배열에 값을 추가합니다. 물론 코드는variable+=( value )사용배열 bar1은 다음과 같아야 합니다.

for foo in "${bar1[@]}"
do
    echo "$foo"
done

물론, 타당한 이유가 없는 한 항상 쉘 변수(예: "$foo"및 )를 인용해야 합니다."${bar1[@]}"틀림없이당신은 당신이 무엇을하고 있는지 알고 있습니다. 

답변2

여기에는 세 개의 파이프가 필요하지 않습니다. read문자열에서 추출할 처음 세 개의 필드만 있으면 됩니다.

for foo in "${bar[@]}"; do
    read bar1 bar2 bar3 the_rest <<< "$foo"
done

the_restfoo이는 "abc d"와 같은 것이 가능하고 이를 로 설정하고 싶지 않은 경우 에만 bar3필요합니다 c d.

관련 정보