我有一个变量,它来自某些地方,例如:
VAR1='hhgfhfghhgf"";2Ddgfsaj!!!$#^$\'&%*%~*)_)(_{}||\\/'
现在我有这样的命令
./myscript.sh '$VAR1'
我从某个差异过程中获得了$ VAR1,当我显示它时,它与上面的样子完全一样。
现在该命令失败了,因为变量中已经有单引号。在我使用它的过程中,它会在那时扩展,从而导致该错误。
我可以控制myscript.sh,但不能控制上述命令。
有什么办法可以在脚本中获取变量?
答案 0 :(得分:1)
您所说的话在传递给脚本时不会失败。您的script
可能存在处理问题(或该参数将传递到该命令的命令),无法正确扩展该变量。您可以使用printf
和%q
修饰符来转义所有特殊字符,然后将其传递给脚本:
./myscript.sh "$(printf '%q\n' "$VAR1")"
...或在脚本中执行相同的操作,然后再传递给其他命令:
VAR2="$(printf '%q\n' "$VAR1")"