如何使用echo命令编写和追加到文件

时间:2013-06-19 10:47:29

标签: shell scripting

我正在尝试编写一个脚本,它将使用echo并写入/追加到文件中。 但是我已经在字符串中使用了“”..比如..

echo "I am "Finding" difficult to write this to file" > file.txt
echo "I can "write" without double quotes" >> file.txt

任何人都可以帮助理解这一点,真的很感激。

BR, SM

2 个答案:

答案 0 :(得分:19)

如果您想要引号,则必须使用反斜杠字符对它们进行转义。

echo "I am \"Finding\" difficult to write this to file" > file.txt echo
echo "I can \"write\" without double quotes" >> file.txt

如果您也想写\本身也是如此,因为它可能会导致副作用。所以你必须使用\\

另一个选择是使用'''而不是引号。

echo 'I am "Finding" difficult to write this to file' > file.txt echo
echo 'I can "write" without double quotes' >> file.txt

但是在这种情况下变量替换不起作用,所以如果你想使用变量,你必须将它们放在外面。

echo "This is a test to write $PATH in my file" >> file.txt
echo 'This is a test to write '"$PATH"' in my file' >> file.txt

答案 1 :(得分:4)

如果您有特殊字符,可以使用反斜杠转义它们以根据需要使用它们:

echo "I am \"Finding\" difficult to write this to file" > file.txt
echo "I can \"write\" without double quotes" >> file.txt

但是,您也可以使用shell的“EOF”功能和tee命令,这对于编写各种各样的东西非常好:

tee -a file.txt <<EOF

I am "Finding" difficult to write this to file
I can "write" without double quotes
EOF

这会将您想要的任何内容直接写入该文件,并在转到EOF之前转义任何特殊字符。

*编辑添加追加开关,以防止覆盖文件:
    -a