在bash中如何转义美元符号和花括号

6

我正在制作一个脚本,需要将变量${somestring}写入文件。我考虑的做法是转义美元符号,但执行后发现字符串为空。

有没有正确的转义方法?

我的代码如下:

# \$\{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
1个回答

12

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

$ 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

这个例子可能是可行的,但整个脚本有400行代码,这使得在stackoverflow上发布变得不那么容易。无论如何,这个方法有效!谢谢,我会在4分钟内接受的。 - Paradoxis
2
好开心看到这个!顺便说一下,我想我刚拿到了命令行的金徽章,得分+4。这是一个激动人心的时刻……嗨妈妈! :) - fedorqui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接