2014-09-22 109 views
3

我正在制作一个脚本,需要将$ {somestring}写入文件。 我想这样做的方式是通过转义美元符号,但是当它执行时,字符串结束为空。在bash中转义美元符号和大括号

有没有办法逃避这个正确的?

我的代码:

# \$\{somestring\} works, but leaves the \'s which I don't want. 
myvar=("Yes I require multiple lines. 
    Test \${somestring} test"); 

echo "$myvar" >> "mytest.conf"; 
+2

它适合我。 – choroba 2014-09-22 14:09:27

+2

另外,如果不需要数组,则不要使用括号。 – choroba 2014-09-22 14:10:00

回答

9

只需使用单引号,这样${}不会被解释:

$ myvar=5 
$ echo 'this is ${myvar}' 
this is ${myvar} 
$ echo "this is ${myvar}" 
this is 5 

注意,虽然,你的方法是工作(至少我在Bash):

$ myvar=("Yes I require multiple lines. 
    test \${somestring} test"); 
$ echo "$myvar" > a 
$ cat a 
Yes I require multiple lines. 
    test ${somestring} test 
+0

这个例子可能有效,但整个脚本是400行代码,这使得它不太容易发布到stackoverflow上。反正这工作!谢谢,我会在4分钟内接受 – Paradoxis 2014-09-22 14:16:01

+0

很高兴阅读!顺便说一下,我认为这些+4我刚刚拿到了金牌徽章。这是一个激动人心的时刻......你好妈妈! :) – fedorqui 2014-09-22 14:18:29

+0

@fedorgui grats :) – Paradoxis 2014-09-22 14:20:38