【问题标题】:Bash script check if tilde '~' is an argument [duplicate]Bash脚本检查波浪号'〜'是否是一个参数[重复]
【发布时间】:2017-09-24 10:26:02
【问题描述】:

我有一个简单的 bash 脚本,它可以接受将被视为文本字符串的参数,仅此而已。

如果我给它~,不带引号,那么主目录/home/users/me 就是被解析的。引用它,"~",没关系。字符“~”是我想要的,而不是主路径。

有什么方法可以确保未引用的~ 被完全视为字符“~”,而不是主目录别名?

【问题讨论】:

  • 不,它在你的脚本看到它之前就被shell解释了。
  • 波浪号扩展是由您的 shell 执行的,而不是由脚本执行的。您还可以通过在波浪号前加上反斜杠来禁用波浪号扩展。
  • 有什么特殊原因需要您这样做吗?你不能引用或转义你的命令行参数吗?

标签: bash scripting command-line-arguments tilde


【解决方案1】:

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

可能有一个可以在 shell 中更改的 bash 选项,但这会影响 shell 中的所有内容,这听起来不像你想要的。

我认为简短的答案是否定的。在将参数传递给脚本之前,您无法在脚本中更改父 shell 扩展参数的方式。

【讨论】:

猜你喜欢
  • 2012-02-16
  • 2012-10-20
  • 2015-04-06
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 2021-11-16
  • 2011-09-22
相关资源
最近更新 更多