无法逃脱“?”变量中的字符 (unix)

无法逃脱“?”变量中的字符 (unix)

我一直在到处寻找这个问题,但我没有找到它,而且对于我当前的问题似乎还没有任何答案,坦率地说,这甚至没有意义。

那么,我想做的是逃避问号?在我的变量声明中。明明写着

var=?

不会做的。当然,你可以使用反斜杠和问号来解决问题,通常:

var=\?

但是:这不起作用(但实际上应该)。当回显变量时,它实际上输出:

5 A X

(这是我的主目录中的三个文件夹)然后我注意到当我在我的主目录中或在 root 这样的目录中(其中有文件夹 A、B 和 C)时发生了这种情况。因此,我将 cwd 更改为一个新创建的空目录,突然它就起作用了。造成这种情况的具体原因是什么?它似乎只发生在一个字母的文件夹名称上,但我认为这不应该发生,因为我用 \? 转义了问号。

答案1

您应该在echo命令中引用该变量:

$ var=?
$ echo "$var"
?

答案2

实话说。这正确的逃生方法取决于大部分根据使用的外壳。最常见的转义符(正如您已经提到的)只是一个反斜杠\。但是,取决于它的用法以及您使用的 shell。方法可能不同。

所以。综上所述。这正确的仅当提供了您正在使用的 shell 时才能给出答案。 :)

相关内容