我有一个简单的bash脚本,它可以接受它将被视为文本字符串的参数,仅此而已。Bash脚本检查代字号'〜'是否是参数
如果我给它~
,没有引号,那么主目录/home/users/me
就是解析的内容。引用它,"~"
,没关系。字符“〜”是我想要的,而不是家乡的道路。
有没有什么方法可以确保将未加引号的~
严格视为字符“〜”,而不是主目录别名?
我有一个简单的bash脚本,它可以接受它将被视为文本字符串的参数,仅此而已。Bash脚本检查代字号'〜'是否是参数
如果我给它~
,没有引号,那么主目录/home/users/me
就是解析的内容。引用它,"~"
,没关系。字符“〜”是我想要的,而不是家乡的道路。
有没有什么方法可以确保将未加引号的~
严格视为字符“〜”,而不是主目录别名?
在参数传递给脚本之前,bash shell正在命令行上扩展~
。
There 可能是一个bash选项,您可以在shell中进行更改,但这会影响shell中的所有内容,而这听起来并不像您想要的那样。
简短的回答我认为是不。在脚本中没有任何东西可以改变父shell在将它们传递给脚本之前扩展任何参数的方式。
我没有看到任何店铺禁用'〜'扩展。 https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html –
谢谢。尽可能多地思考。 –
不,它在您的脚本看到它之前由shell解释。 – 123
代字号扩展正在由shell执行,而不是由脚本执行。您还可以通过在反斜杠之前加前缀来禁用代字符扩展。 – ghoti
为什么你需要这样做有什么特别的原因吗?你不能引用或转义你的命令行参数吗? –