bash:如何传递包含特殊字符的命令行参数

Modified on: Fri, 07 Dec 2018 08:20:02 +0800

我自己写了一个linux程序program,需要一个正则表达式作为输入。

我想在bash shell中调用该程序,并将该正则表达式作为命令行参数传递给程序(还有其他命令行参数)。典型的正则表达式类似于

[abc]\_[x|y]

不幸的是,[]|这些字符是bash中的特殊字符。因此,调用

[abc]\_[x|y]

不起作用。有没有办法通过使用某种转义字符或引号等来传递表达式?

(调用program "[abc]\_[x|y] anotheragument"也不起作用,因为它将两个参数解释为一个。)

作者:mpy,Christian

最佳答案

你可以

  1. 使用反斜杠转义每个特殊符号(如\[abc\]_\[x\|y\])或
  2. Doublequote整个参数(如"[abc]_[x|y]")。
  3. 醇>

    编辑一些指出,dobleqouting不会阻止变量扩展或命令替换。因此,如果您的正则表达式包含可以被bash解释为其中之一的内容,使用单引号

作者:Community,U-D13

相关问答

添加新评论