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"

おすすめ記事