![无法逃脱“?”变量中的字符 (unix)](https://linux22.com/image/155439/%E6%97%A0%E6%B3%95%E9%80%83%E8%84%B1%E2%80%9C%EF%BC%9F%E2%80%9D%E5%8F%98%E9%87%8F%E4%B8%AD%E7%9A%84%E5%AD%97%E7%AC%A6%20(unix).png)
我一直在到处寻找这个问题,但我没有找到它,而且对于我当前的问题似乎还没有任何答案,坦率地说,这甚至没有意义。
那么,我想做的是逃避问号?在我的变量声明中。明明写着
var=?
不会做的。当然,你可以使用反斜杠和问号来解决问题,通常:
var=\?
但是:这不起作用(但实际上应该)。当回显变量时,它实际上输出:
5 A X
(这是我的主目录中的三个文件夹)然后我注意到当我在我的主目录中或在 root 这样的目录中(其中有文件夹 A、B 和 C)时发生了这种情况。因此,我将 cwd 更改为一个新创建的空目录,突然它就起作用了。造成这种情况的具体原因是什么?它似乎只发生在一个字母的文件夹名称上,但我认为这不应该发生,因为我用 \? 转义了问号。
答案1
您应该在echo
命令中引用该变量:
$ var=?
$ echo "$var"
?
答案2
实话说。这正确的逃生方法取决于大部分根据使用的外壳。最常见的转义符(正如您已经提到的)只是一个反斜杠\
。但是,取决于它的用法以及您使用的 shell。方法可能不同。
所以。综上所述。这正确的仅当提供了您正在使用的 shell 时才能给出答案。 :)