我可以访问具有如下格式的文件夹列表:
lastname, firstname(id)
当我尝试从终端输入文件夹时,看起来
cd test/lastname,\ firstname\(id\)
我不确定为什么在没有空格的地方有反斜杠。我的脚本可以访问凭据,并且使用反斜杠生成了精确的格式,但我仍然无法从 bash 脚本输入该文件夹。我使用的变量是这样的:
folder="lastname,\ firstname\(id\)"
当我这样做时,cd $HOME/test/$folder/
它说没有这样的文件夹。我尝试了针对不同问题提出的几种解决方案,但没有奏效。将其放在文件夹变量的双引号内以及整个表达式上也不起作用。我想我不知道出了什么问题,因此无法让它工作。如果有人能在这里帮助我那就太好了!
答案1
这:
我使用的变量是这样的:
folder="lastname,\ firstname\(id\)"
将要不是工作。因为那么变量保持反斜杠:
[maulinglawns@ArchLinux ~]$ folder="lastname,\ firstname\(id\)"
[maulinglawns@ArchLinux ~]$ echo "$folder"
lastname,\ firstname\(id\)
因此,您会收到以下消息:
cd "slask/$folder"
bash: cd: slask/lastname,\ firstname\(id\): No such file or directory
解决这个问题最简单的方法是将变量放入""
.像这样:
[maulinglawns@ArchLinux slask]$ mkdir lastname,\ firstname\(id\)
[maulinglawns@ArchLinux slask]$ folder="lastname, firstname(id)"
[maulinglawns@ArchLinux slask]$ cd "$folder"
[maulinglawns@ArchLinux lastname, firstname(id)]$
这样,shell 就不会在变量中的空白处进行分割。阅读有关变量和引用的更多信息这里。
答案2
引用您的扩展($folder
是扩展,“参数扩展”):
$ cd "$HOME/test/$folder/"
如果将值放在单引号中:
$ folder='lastname, firstname(id)'
不需要反引号,上面的代码cd
就能正常工作。