我运行一个简单的bash脚本,需要围绕多部分命令使用双引号,如下所示:
for i in /data/*; do
mycommand "first_directive ; second_directive $i"
done
为了处理特殊字符,我在变量周围加上引号,如下所示:
"first_directive ; second_directive '$i'"
这在很大程度上起作用,但我找到了一个边缘案例。
当文件名包含两个单引号时,如同there_are_12''_in_a_foot
一样,它会忽略''
并只查找there_are_12_in_a_foot
以下是data
文件夹的内容:
$ ls /data/
what_do_they_call_a_quarter_pounder
they_use_the_metric_system
there_are_12''_in_a_foot
我已经尝试了我能想到的每一个引号组合,当然还有搜索,但我找不到任何有效的方法。
答案 0 :(得分:1)
您可以使用:
'${variable//\'/\'\\\'\'}'
而不是
'$variable'
这将逃脱这样的单引号:
'there_are_12'\'''\''_in_a_foot'
可能因为它当然取决于my_command
。
答案 1 :(得分:0)
你应该能够用反斜杠转义there_are_12\'\'_in_a_foot
。
dplyr