bash - 如何正确传递带有空格的字符串作为单独的命令行参数?
问题描述
例如,如果我想重命名文件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
应该组合在一起?
谢谢!
解决方案
数组被添加到语言中正是为了解决这个用例(不是作为通用容器):
args=("old name" "new name")
mv "${args[@]}"
推荐阅读
- angular - 为什么 PrimeNg pSortableColumn 没有容器项目的点击事件?
- arrays - 在 Google 表格中使用数组公式滚动总和
- regex - 将所有特殊字符和单词分隔到字符串列表中的项目中 - 正则表达式
- html - CSS中的不透明度不影响div
- c++ - 反转一个数字并从头开始删除零
- ruby-on-rails - 如何在ruby erb html表中编写if语句
- javascript - 如何在CKEditor 5中上传图像时添加标题
- django - 用于验证 1 个字段与 Django 中的另一个字段的数据库级别约束
- git - 如何在 VS Code 中部分还原同事的 Git 提交?
- java - 单元测试用例失败:与此模拟的零交互