【发布时间】:2012-11-16 10:27:59
【问题描述】:
我正在做一场噩梦,这应该是最微不足道的任务。
我的最终目标是从 bash 脚本发出以下命令:sqlite3 my_db.db '.read my_file.sql'
这里有两个问题:
1. 单引号是必须的,不能用双引号代替
2. my_file.sql 是一个仅在运行时才知道的变量。
所以我需要一种方法让 bash 构建一个字符串,该字符串一方面包含一个变量值,另一方面该值应该用单引号括起来。
我也更喜欢不依赖于 AWK、Perl 等其他工具的解决方案。如果真的有必要,也许可以使用 sed。
谢谢。
感谢乔纳森和尼尔森。
我尝试了所有三个建议,但都失败了。
为简单起见,我将问题简化为以下内容:
我编写了以下脚本 (tst.sh):
#!/bin/bashfile=/tmp/1ls "'"$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
似乎确实添加了引号,但生成的命令与手动输入的命令不同。
有什么想法吗?
【问题讨论】:
-
单引号是强制性的原因是什么?那应该是单引号中的一个参数还是两个参数,一个以单引号开头,另一个以单引号结尾。
标签: string bash variables quote