我有一个变量,它来自某个地方,比如: VAR1='hhgfhfghhgf"";2Ddgfsaj!!!$#^$\'&%*%~*)_)(_{}||\\/' 现在我有一个像这样的命令:./myscript.sh '$VAR1' 我从某个不同的进程中获取$VAR1,当我显示它时,它看起来正好如上所述。 现在该命令失败了,因为变量内已经有单引号。在使用它的过程中,它会被扩展,这导致了错误。 我可以控制myscript.sh,但不能控制上面的命令。 有没有办法让我在我的脚本中获取变量?
您所说的传递给脚本时不可能出现失败的情况。也许是您的脚本存在处理问题(或一个命令将该参数传递进去),不能正确扩展变量。您可以使用printf和%q修饰符来转义所有特殊字符,然后将其传递到您的脚本中: ./myscript.sh "$(printf '%q\n' "$VAR1")" 您可以通过以下方式在脚本中修改文本,然后再传送给其他命令: VAR2="$(printf '%q\n' "$VAR1")"
./myscript.sh '$VAR1'
本身不会失败,因为变量没有被扩展。 - that other guyeval
语句吗?请包含一个 MCVE 来展示错误。 - that other guymyscript.sh
的评估过程中出现了问题,但由于我们不知道这个脚本里面有什么,所以我们无法确定出了什么问题。除此之外,将字符串$VAR
传递给脚本(而不是变量VAR
的内容)的整个概念对我来说看起来很奇怪,但您可能知道在这里做什么... - user1934428