首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何转义bash脚本命令行中传递的参数

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

Stack Overflow用户
提问于 2018-09-06 13:52:02
回答 1查看 3.7K关注 0票数 3

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

代码语言:javascript
复制
VAR1='hhgfhfghhgf"";2Ddgfsaj!!!$#^$\'&%*%~*)_)(_{}||\\/'

现在我有了这样的命令

代码语言:javascript
复制
./myscript.sh '$VAR1'

我从一些不同的进程中获得了$VAR1,当我显示它时,它看起来与上面的一模一样。

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

我可以控制myscript.sh,但不能控制命令。

有没有办法在我的脚本中获取变量?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-06 14:50:44

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

代码语言:javascript
复制
./myscript.sh "$(printf '%q\n' "$VAR1")"

..。或者在想要传递给其他一些命令之前,在脚本中执行相同的操作:

代码语言:javascript
复制
VAR2="$(printf '%q\n' "$VAR1")"
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52197317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档