我想在.txt
文件中存储一些变量
但是下面的代码只保存最后一个变量。
我该如何解决?
$x1 ="a"
$x2 = "b"
$x3 = "c"
>myfile.txt
echo $x1 >myfile.txt
echo $x2 >myfile.txt
echo $x3 >myfile.txt
答案 0 :(得分:2)
>
是“创建或替换文件,写入输出”。你想要>>
,这是“打开文件追加”
echo $x1 >myfile.txt # create/overwrite file
echo $x2 >>myfile.txt # append to file
echo $x3 >>myfile.txt # append to file again
答案 1 :(得分:2)
COMMAND_OUTPUT >
# Redirect stdout to a file.
# Creates the file if not present, otherwise overwrites it.
COMMAND_OUTPUT >>
# Redirect stdout to a file.
# Creates the file if not present, otherwise appends to it.
tldp documentation on I/O redirection
#writes the variables to the files
x1="a"
x2="b"
x3="c"
echo $x1 >> myfile.txt
echo $x2 >> myfile.txt
echo $x3 >> myfile.txt
答案 2 :(得分:0)
最简单的方法(最少学习)是使用>>
附加到文件:
>myfile.txt
echo $x1 >>myfile.txt
echo $x2 >>myfile.txt
echo $x3 >>myfile.txt
您可以省略无回声线并仅使用>
代替>>
来获得相同的效果,但上面显示的一致性有一些优点。
另一种方法是使用I / O分组运算符{
and }
:
{
echo $x1
echo $x2
echo $x3
} > myfile.txt
另一种方法是使用exec
与I/O Redirection结合,从此处向网络发送所有标准输出:
exec >myfile.txt
echo $x1
echo $x2
echo $x3
如果您需要将标准输出切换回原始输出,则必须先保留它:
exec 3>&1 >myfile.txt
echo $x1
echo $x2
echo $x3
exec 1&>3 3>&-
3>&1
表示法打开文件描述符3作为文件描述符1(标准输出)的副本。
1>&3
表示法打开文件描述符1(标准输出)作为文件描述符3的副本(之前创建)。 3>&-
表示法关闭文件描述符3.