$ 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"