while 루프 내부의 변수 [닫기]

while 루프 내부의 변수 [닫기]

$VAR2는 잘 작동하지만 $VAR1이 반환됩니다.

shuf: 잘못된 옵션 -- 'c' 자세한 내용을 보려면 'shuf --help'를 시도하세요.

#!/bin/bash
VAR1="shuf -n 1 file | head -c 5"
VAR2="shuf -n 1 file"
FILE="data"

while IFS="  " read -r COL1 COL2; do
    echo "$($VAR1) $($VAR2) $COL1 $COL2"
done < "$FILE"

답변1

명령 출력을 변수에 저장하는 올바른 방법은 다음과 같습니다.

VARIABLE="$(command)"

또는 "기존 방식"(백틱 참고):

VARIABLE=`command`

귀하의 코드는 다음 형식으로 작동할 수 있습니다(직접 테스트하지는 않음).

#!/bin/bash
VAR1="$(shuf -n 1 file | head -c 5)"
VAR2="$(shuf -n 1 file)"
FILE="data"

while IFS=" " read -r COL1 COL2; do
    echo "$VAR1 $VAR2 $COL1 $COL2"
done < "$FILE"

관련 정보