2017-04-06 135 views
1

我试图将特定的文本回显到文件中。但最终会以另一种方式回应它。我无法确定我要出错的地方。如何在shell脚本中回显包含路径的文本

我想呼应的文字是

export PATH=$PATH:/usr/lib/java/jdk1.8.0_121/bin/ 

而且在脚本文件中我设置为

echo "export PATH=$PATH:/usr/lib/java/jdk1.8.0_121/bin/" >> /home/$USER/Desktop/output.txt 

但在output.txt的文件,我得到

export PATH=/home/lijin/bin:/home/lijin/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/java/jdk1.8.0_121/bin/:/usr/lib/java/jdk1.8.0_121/bin/ 

我想要将精确的文本回显到文件output.txt中

我使用回声,因为我必须追加已经存在的文件内容,然后将其打印到文件中。

+0

逃避是你的朋友出口PATH = \ $ PATH:/usr/lib/java/jdk1.8.0_121/bin/ – konstructor

+0

@konstructor是它作品谢谢 – Lijin

+0

@anubhava我认为你错过了你的答案中的东西,我得到相同的错误输出 – Lijin

回答

4

单引号字符串,以避免可变膨胀,

echo 'export PATH=$PATH:/usr/lib/java/jdk1.8.0_121/bin/' >> /home/$USER/Desktop/output.txt 

规则的拇指,单引号不扩大在bash变量,只有双引号做他们。使用单引号周围的变量名,从做变量代换

+0

非常感谢。它工作的很好,我发现你的答案结构合理,因为它只有单引号 – Lijin

+1

这解决了我的问题。谢谢。我会在未来提出更多的问题:) – Lijin

0
echo "export PATH=\$PATH:/usr/lib/java/jdk1.8.0_121/bin/" >> /home/$USER/Desktop/output.txt 

弱引用是一种选择,如果你想扩展字符串中的其他变量剥夺$

例如,你可能想要做这样的事情

echo "export PATH=\$PATH:$JAVA_HOME/bin/" >> /home/$USER/Desktop/output.txt 
+0

你的答案也适用。只有一个逃生角色做这个工作大声笑。谢谢 – Lijin

+1

如果你有兴趣有一个很好的解释转义或单引号http://wiki.bash-hackers.org/syntax/quoting – konstructor

+0

哇,这是一个非常有用的指导。再次感谢 :) – Lijin

相关问题