【发布时间】:2013-03-25 21:19:52
【问题描述】:
我正在尝试mv 一个文件(重命名它以用破折号替换空格)。如果我传递不带引号的源和目标参数,则源被分解,因为mv 认为它是参数的结尾。
如果我用参数包围 source 和 dest,mv 会报告找不到源。目前,$1 和 $2 在开头和结尾都有硬编码引号。 $onam 和 $dnam 是没有硬编码引号的等价物。
这个来自提示符的命令完美运行,因为 source 和 dest 被引号括起来:
mv "/home/bryan/renametest/TestFolder/test file" "/home/bryan/renametest/TestFolder/test---file"
这是我迄今为止尝试过的(输入和结果)
mv $1 $2
mv: cannot stat `"/home/bryan/renametest/TestFolder/test file"'
No such file or directory
mv $onam $dnam
mv: cannot move `/home/bryan/renametest/TestFolder' to a subdirectory of itself,
`/home/bryan/renametest/TestFolder/test---file'
mv $1 $dnam
mv: cannot stat `"/home/bryan/renametest/TestFolder/test file"':
No such file or directory
mv $onam $2
mv: cannot move `/home/bryan/renametest/TestFolder' to `"/home/bryan/renametest/TestFolder/test---file"':
No such file or directory
如何移动带有空格的文件?
【问题讨论】:
-
正如对您的其他相关问题之一的评论中所建议的那样,从变量内容中获取引号。否则,shell 将查找名称中带有 " 的文件。
-
我有带引号和不带引号的。请阅读上文。 “目前,$1 和 $2 在开头和结尾都有硬编码引号。$onam 和 $dnam 是没有硬编码引号的等价物。”