我想将一个名为"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 Dude
和Hi Bro
被标识为两个独立的参数,因为你在示意Bash不要通过转义来赋予空间任何特殊意义。(如果你没有转义空格,会有四个参数(
如果要通过变量传递值,最简单的解决方案是使用两个变量,如下所示。
src="Hi Dude"
dst="Hi Bro"
mv "$src" "$dst"
这与mv "Hi Dude" "Hi Bro"
相同。双引号表示 bash 将内部的整个事物视为一个单元。所以不要忘记双引号。否则会mv Hi Dude Hi Bro
,它做一些完全不同的事情。