我从最应该做的最琐碎的任务中做了一场噩梦。构建包含单引号的变量值的bash字符串
我的最终目标是从一个bash脚本发出以下命令:
有两个锁扣位置:
1.单引号是强制性的,不能被替换,说,双引号
2. my_file.sql
是一个只在运行时才知道的变量。
所以我需要的是一种让bash构建一个字符串的方法,一方面它包含一个变量值,另一方面该值应该被单引号包围。
我也更喜欢不依赖像AWK,Perl之类的其他工具的解决方案。如果真的有必要,也许会sed。
谢谢。
谢谢乔纳森和纳尔逊。
我尝试了所有三个建议,但都失败了。
为简单起见我的问题降低到以下内容:
我写下面的脚本(tst.sh):
#!/bin/bash
file=/tmp/1
ls "'"$file"'"
ls \'$file\'
ls "'$file'"
然后我提供以下命令:
$ touch /tmp/1
$ ls '/tmp/1'
/tmp/1
$ ./tst.sh
'/tmp/1': No such file or directory
'/tmp/1': No such file or directory
'/tmp/1': No such file or directory
这似乎是确实增加了报价,但由此产生的命令是不一样的手动输入时。
任何想法?
单引号是强制性的原因是什么?这应该是单引号或两个参数中的一个参数,一个以单引号开头,另一个以单引号结尾。 –