为什么我的函数不能使用空格? (cd,目录名)

为什么我的函数不能使用空格? (cd,目录名)

我有这个功能,我经常使用它,而且效果很好。

这里是:

cdx () { cd `dirname $1` ; }

但是,这不适用于空格。当我像这样使用它时

cdx ~/desktop/folder/file\ file

它返回

usage: dirname path

但我要传递的是,本质上dirname path。那么我应该怎么做才能解决这个问题呢? (当文件夹名称中有空格时,它也会执行相同的操作)

我的第一个想法是使用引号, cdX "directory\ whatever"但它也不起作用。

答案1

如果您简单地编写$i,空格会将您的变量内容转换为多个参数。如果你想保留空格,你必须引用一些东西。

对于您的示例,您可能想要:

cdx () { cd -- "$(dirname -- "$1")" ; }

并记住总是引用你的变量。

相关内容