gpt4 book ai didi

bash - 如何在 bash 脚本中处理文件名中的空格?

转载 作者:行者123 更新时间:2023-11-29 09:02:48 26 4
gpt4 key购买 nike

我想自动化 rsyncing,并尝试了以下代码:

TARGET="/media/USB\ DISK/Backup/"
rsync -av --delete ~/Data ${TARGET}

但执行结果出现以下错误:

rsync: link_stat "/media/USB\" failed: No such file or directory (2)
rsync: mkdir "/home/DISK/BACKUP" failed: No such file or directory (2)

因为目标文件名中的“空格”。但是,当我 echo 命令时,我可以使用它直接在 shell 上运行。

如何正确地做到这一点(哪些括号,带反斜杠或不带反斜杠?)为什么?

最佳答案

有两种可能:

TARGET="/media/USB DISK/Backup/"
rsync -av --delete ~/Data "${TARGET}"

TARGET=/media/USB\ DISK/Backup/
rsync -av --delete ~/Data "${TARGET}"

第一个通过引用整个字符串来保留空间。第二个通过用反斜杠转义来保留空间。此外,需要引用 rsync 命令的参数。

当字符串被双引号括起来并且空格前​​面有反斜杠时,如 TARGET="a\b",结果是 TARGET 包含可能不是您想要的文字反斜杠。有关详细信息,请参阅 man bash 中标题为“引用”的部分。

关于bash - 如何在 bash 脚本中处理文件名中的空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20480070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com