我正在做一个噩梦,应该是最微不足道的任务。
我的最终目标是从 bash 脚本发出以下命令:
sqlite3 my_db.db '.read my_file.sql'
这里有两个问题:
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
似乎确实添加了引号,但生成的命令与手动输入的命令不同。
有任何想法吗 ?