重命名命令不会在带有空格键的文件的 2 步命令中重命名(mac 终端)



我想将一个名为"Hi Dude"的文件重命名为"Hi Bro"。

如果我在 bash 中运行以下命令,它可以工作。

mv Hi Dude Hi Bro

但是当我执行以下两个命令时:

arg="Hi Dude Hi Bro"
mv $arg

它显示以下错误:

usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory

有什么解决方案吗?我想为另一个 bash 脚本实现这一点。

mv(至少(需要两个参数(用空格分隔(。

当你运行mv Hi Dude Hi Bro时,Hi DudeHi Bro被标识为两个独立的参数,因为你在示意Bash不要通过转义来赋予空间任何特殊意义。(如果你没有转义空格,会有四个参数(

如果要通过变量传递值,最简单的解决方案是使用两个变量,如下所示。

src="Hi Dude"
dst="Hi Bro"
mv "$src" "$dst"

这与mv "Hi Dude" "Hi Bro"相同。双引号表示 bash 将内部的整个事物视为一个单元。所以不要忘记双引号。否则会mv Hi Dude Hi Bro,它做一些完全不同的事情。

最新更新