如何扩展shell变量,将其单引号,然后将其传递给sudo?
这不起作用。
key="some string including special characters"
file='/home/ansible/.ssh/authorized_keys'
sudo -i -u ansible grep -q -E "'"${key}"'" $file
它不起作用。
sudo -i -u ansible cat /home/ansible/.ssh/authorized_keys
hoge
大 ge
key='h oge'
sudo -i -u ansible grep -E "'"$key"'" $file
grep:oge':没有这样的文件或目录
答案 0 :(得分:2)
我从没想过要这么说,但是Use Fewer Quotes(商标待定)。这应该可以正常工作:
sudo -i -u ansible grep -q -E "$key" "$file"
基本上,您只需为文字代码提供语法引号(除非您正在做eval
)。
如果您在key
中有字符,这些字符在正则表达式中具有特殊意义,这是完全不同的问题。在这种情况下,请使用grep -q -F "$key" "$file"
搜索文字字符串,而不是扩展的正则表达式。