Geo*_*nan 2 bash scripts 14.04
如何使用“cd”访问带有空格的目录,例如 bash 脚本中的“XML 5.1 Final Fields”
我试过 cd XML 5.1 Final Fields
但它给出了No such file or directory错误。
这是脚本:
#! /bin/bash
xmlfolder="XML/ \/5.1/ \/Final/ \/Fields"
xmlpath="/home/george/Desktop/m5u/test/$xmlfolder"
cd $xmlpath
Run Code Online (Sandbox Code Playgroud)
ls /home/george/Desktop/m5u/test/
XML 5.1 Final Fields
Run Code Online (Sandbox Code Playgroud)
~/Desktop/m5u/test$ ll
drwxr-xr-x 9 george george 4096 Feb 18 12:44 XML 5.1 Final Fields
Run Code Online (Sandbox Code Playgroud)
这是我运行脚本时得到的错误
line 5: cd: /home/george/Desktop/m5u/test/XML\: No such file or directory
Run Code Online (Sandbox Code Playgroud)
你的变量xmlfolder是错误的。它应该是
xmlfolder=XML\ 5.1\ Final\ Fields
Run Code Online (Sandbox Code Playgroud)
或 ="XML 5.1 最终字段"
您不需要/路径中的 - 因为它只是一个文件夹。你也并不需要"",如果你也在使用\。选一个。
由于您使用ls命令进行编辑,我可以看到您的文件夹名称末尾可能有一个空格。我建议您通过在 nautilus 中重命名或使用mv命令来删除空间。
如果你想保留空间,你的变量名应该是这样的:
xmlfolder=XML\ 5.1\ Final\ Fields\
Run Code Online (Sandbox Code Playgroud)
或者
xmlfolder="XML 5.1 Final Fields "
Run Code Online (Sandbox Code Playgroud)
请注意,如果您对\字符使用 First 选项,则还需要使用 来引用变量"",即"$xmlfolder"。
该错误表明cd对路径不满意。
尝试cd从这里更改命令
cd $xmlpath
Run Code Online (Sandbox Code Playgroud)
到
cd "$xmlpath"
Run Code Online (Sandbox Code Playgroud)
老实说,您不需要cd在 bash 脚本中。只需使用绝对路径引用所有内容。
总之,您的xmlfolder=线路应该是xmlfolder=XML\ 5.1\ Final\ Fields,您的cd线路应该是cd "xmlpath"。
我的代词是他/他