逃脱美元符号和大括号在bash

Par*_*xis 3 bash shell escaping

我正在创建一个需要将$ {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";
Run Code Online (Sandbox Code Playgroud)

fed*_*qui 9

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

$ myvar=5
$ echo 'this is ${myvar}'
this is ${myvar}
$ echo "this is ${myvar}"
this is 5
Run Code Online (Sandbox Code Playgroud)

但请注意,您的方法是有效的(至少对我来说是Bash):

$ myvar=("Yes I require multiple lines.
  test \${somestring} test");
$ echo "$myvar" > a
$ cat a
Yes I require multiple lines.
  test ${somestring} test
Run Code Online (Sandbox Code Playgroud)

  • 很高兴读到!顺便说一句,我认为有了这些+4,我刚刚获得了 shell 的金徽章。这是一个激动人心的时刻...你好妈妈!:) (2认同)