gpt4 book ai didi

linux - 如何转义 bash 脚本命令行中传递的参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:16 26 4
gpt4 key购买 nike

我有一个变量,它来自某个地方,例如:

VAR1='hhgfhfghhgf"";2Ddgfsaj!!!$#^$\'&%*%~*)_)(_{}||\\/'

现在我有这样的命令

./myscript.sh '$VAR1'

我从某个 diff 进程中获取 $VAR1,当我显示它时,它看起来与上面完全一样。

现在该命令失败了,因为变量中已经有单引号了。在我使用它的过程中,它在那个点被扩展,这导致了那个错误。

我可以控制 myscript.sh 但不能凌驾于命令之上。

有什么方法可以在我的脚本中获取变量吗?

最佳答案

传递给您的脚本时,您所说的不可能失败。可能您的 script 有处理问题(或此参数将传递给它的命令),无法正确扩展变量。您可以使用带有 %q 修饰符的 printf 来转义所有特殊字符,然后将其传递给您的脚本:

./myscript.sh "$(printf '%q\n' "$VAR1")"

...或者在你想传递给其他一些命令之前在你的脚本中做同样的事情:

VAR2="$(printf '%q\n' "$VAR1")"

关于linux - 如何转义 bash 脚本命令行中传递的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52197317/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com