2017-04-26 102 views
0

我有一个简单的bash脚本,它可以接受它将被视为文本字符串的参数,仅此而已。Bash脚本检查代字号'〜'是否是参数

如果我给它~,没有引号,那么主目录/home/users/me就是解析的内容。引用它,"~",没关系。字符“〜”是我想要的,而不是家乡的道路。

有没有什么方法可以确保将未加引号的~严格视为字符“〜”,而不是主目录别名?

+1

不,它在您的脚本看到它之前由shell解释。 – 123

+0

代字号扩展正在由shell执行,而不是由脚本执行。您还可以通过在反斜杠之前加前缀来禁用代字符扩展。 – ghoti

+0

为什么你需要这样做有什么特别的原因吗?你不能引用或转义你的命令行参数吗? –

回答

0

在参数传递给脚本之前,bash shell正在命令行上扩展~

There 可能是一个bash选项,您可以在shell中进行更改,但这会影响shell中的所有内容,而这听起来并不像您想要的那样。

简短的回答我认为是不。在脚本中没有任何东西可以改变父shell在将它们传递给脚本之前扩展任何参数的方式。

+0

我没有看到任何店铺禁用'〜'扩展。 https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html –

+0

谢谢。尽可能多地思考。 –