我想用来$RANDOM
创建以下输出并将其全部写入文件和变量中。
123
24234
758
4893
我的尝试如下,但没有一个成功。我尝试过了重定向printf
toread
和 then的标准输出重定向到一个file
$ read var < printf "%s\n" $RANDOM $RANDOM $RANDOM $RANDOM > file
我也尝试过管道printf
to read
then的标准输出重定向至file
:
$ printf "%s\n" $RANDOM $RANDOM $RANDOM $RANDOM | read var > file
有人可以帮助我了解我的问题出在哪里吗?
答案1
read
用于获取输入并将其分配给变量。它不产生输出,因此重定向只会产生一个空文件。
您可以使用tee
命令反而。它从 stdin 获取输入,并将输出写入 stdout 以及一个或多个文件。
使用tee
变量赋值,你可以这样做:
$ variable=$(printf "%s " $RANDOM $RANDOM $RANDOM $RANDOM | tee variable.txt)
请注意,我使用了“%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