例如,如果我想重命名文件old_name
new_name
,则可以使用以下代码:
args='old_name new_name'
mv $args
但是,如果原始文件名是old name
,则以下代码均无法正常工作:
args='"old name" new_name'
mv $args
# mv: target 'new_name' is not a directory
args='old\ name new_name'
mv $args
# mv: target 'new_name' is not a directory
new_name
被识别为第三个参数。从字符串扩展后,像"
和\
这样的字符似乎失去了特殊的含义。
如何正确传递带有空格的字符串作为单独的命令行参数?在这种情况下,是否可以指定old
和name
分组在一起?
谢谢!
答案 0 :(得分:0)
将数组精确地添加到语言中以解决此用例(而不是作为通用容器):
args=("old name" "new name")
mv "${args[@]}"