我有一个变量,它来自某些地方,比如:
VAR1='hhgfhfghhgf"";2Ddgfsaj!!!$#^$\'&%*%~*)_)(_{}||\\/'
现在我有了这样的命令
./myscript.sh '$VAR1'
我从一些不同的进程中获得了$VAR1,当我显示它时,它看起来与上面的一模一样。
现在该命令失败了,因为变量中已经有单引号了。在我使用它的过程中,它在那个点被扩展,这会导致该错误。
我可以控制myscript.sh,但不能控制命令。
有没有办法在我的脚本中获取变量?
发布于 2018-09-06 14:50:44
当传递给你的脚本时,你所说的不可能失败。您的script
可能存在无法正确展开变量的处理问题(或此参数将传递到其中的命令)。您可以使用带有%q
修饰符的printf
来转义所有特殊字符,然后将其传递给脚本:
./myscript.sh "$(printf '%q\n' "$VAR1")"
..。或者在想要传递给其他一些命令之前,在脚本中执行相同的操作:
VAR2="$(printf '%q\n' "$VAR1")"
https://stackoverflow.com/questions/52197317
复制相似问题