我有一个shell脚本,其中有一个命令:
if [ -e "./${name}/\"$1\"_page.json" ];
我注意到与许多其他语言不同,它\"
不起作用。
我应该怎么办?
答案1
使用三重双引号?
if [ -e "./${name}/"""$1"""_page.json" ];
这会
${name}
将和替换$1
为实际值。
请注意:
archemar@mybox:~/tmp7$ foo=bar
archemar@mybox:~/tmp7$ f2=deux
archemar@mybox:~/tmp7$ echo "${f2}/"""${foo}"""/test.php"
deux/bar/test.php
archemar@mybox:~/tmp7$ echo "${f2}/\"${foo}\"/test.php"
deux/"bar"/test.php
正如所指出的,您想要的结果有点不清楚。
答案2
只需使用单引号即可。
if [ -e './${name}/"$1"_page.json' ];
请注意,如果您想要${name}
并$1
进行扩展,则不能使用单引号。阅读这篇文章,了解强引用和弱引用之间的区别。
但是,如果您想扩展参数,那么连接字符串是完全可以的:
if [ -e './'"${name}"'"'"$1"'"_page.json' ];
尽管许多'
字符使得这几乎无法阅读。