$RANDOM
次の出力を生成し、それらをすべてファイルと変数に書き込むために使用したいと思います。
123
24234
758
4893
私の試みは次のとおりです。しかし、それらのどれも成功しませんでした。頑張ったリダイレクトprintf
toread
および then の標準出力リダイレクトにfile
$ read var < printf "%s\n" $RANDOM $RANDOM $RANDOM $RANDOM > file
私も試しました管路printf
read
それまでの標準出力リダイレクトへfile
:
$ printf "%s\n" $RANDOM $RANDOM $RANDOM $RANDOM | read var > file
私の問題が何であるかを理解するのに役立つ人はいますか?
答え1
read
入力を受け取り、変数に割り当てるために使用されます。出力は生成されないため、リダイレクトは空のファイルのみを生成します。
あなたはそれを使用することができますtee
注文する代わりに。これはstdinから入力を受け取り、stdoutと1つ以上のファイルに出力を書き込みます。
変数割り当てを使用すると、tee
次のことができます。
$ variable=$(printf "%s " $RANDOM $RANDOM $RANDOM $RANDOM | tee variable.txt)
出力が1行になるように要求したので、「%s」を使用しました。
次に、以下を提供します。
$ echo $variable
31738 28009 6462 15565
$ cat variable.txt
31738 28009 6462 15565
答え2
ただし:
var="$RANDOM
$RANDOM
$RANDOM
$RANDOM
$RANDOM"
printf '%s\n' "$var" > file
または、スカラー変数に改行区切りリストを格納する代わりに、数値を配列の要素として使用する場合:
var=("$RANDOM" "$RANDOM" "$RANDOM" "$RANDOM" "$RANDOM")
printf '%s\n' "${var[@]}" > file