bash是否能够处理带有“";美元符号;字符(“$”)?

bash是否能够处理带有“";美元符号;字符(“$”)?,bash,character,Bash,Character,在大型公司内处理项目。项目文件夹包含“$”(美元符号)字符。当我尝试将目录更改为此文件夹时,bash似乎感到困惑: cd TEST_$_xyz 产生一个错误: No such file or directory 我几乎可以肯定这是因为bash对“$”字符的处理,但我对bash非常陌生,所以在强制更改名称之前,我希望得到确认 谢谢你需要像这样避开美元($)符号。否则,它将$\u xyz视为环境变量 cd TEST_\$_xyz 例如: # In this case, $a evaluates

在大型公司内处理项目。项目文件夹包含“$”(美元符号)字符。当我尝试将目录更改为此文件夹时,bash似乎感到困惑:

cd TEST_$_xyz
产生一个错误:

No such file or directory
我几乎可以肯定这是因为bash对“$”字符的处理,但我对bash非常陌生,所以在强制更改名称之前,我希望得到确认


谢谢

你需要像这样避开美元($)符号。否则,它将
$\u xyz
视为环境变量

cd TEST_\$_xyz
例如:

# In this case, $a evaluates to nothing because it is not defined
me@mypc:~/tmp/asdf$ mkdir a$a
me@mypc:~/tmp/asdf$ ls
a

# Here, I have escaped $ with \ so that it's treated like a normal $ character
me@mypc:~/tmp/asdf$ mkdir a\$a
me@mypc:~/tmp/asdf$ ls
a  a$a

# changing directory to directory with escaped $ sign
me@mypc:~/tmp/asdf$ cd a\$a
me@mypc:~/tmp/asdf/a$a$ 

您可以将文件名括在单引号中-这样就没有变量展开:

cd 'TEST_$_xyz'
请参阅您可以使用的

    cd TEST*xyz

(asterix可以处理许多不同的字符,如“$”、空格和其他字符。)

这对于交互式使用来说可能还可以,但在脚本中则不行。由于这是一个编程站点,我们应该假设脚本(尽管这里可能不一定是这样)。我不明白为什么不能在脚本中使用这种方法。因为它将匹配
$
之外的其他字符。在交互方面,您可能事先知道没有,但脚本不应该做出这样的假设。