如何在bash脚本中转义文件路径中的空间

时间:2019-04-15 19:44:14

标签: bash

我有一个bash脚本,该脚本需要遍历iOS设备目录中的文件并逐个删除文件。 要从命令行列出文件,请使用以下命令:

ios-deploy --id UUID --bundle_id BUNDLE -l | grep Documents

然后逐个处理每个文件,我在脚本中使用以下for循环

for line in $(ios-deploy --id UUID --bundle_id BUNDLE -l | grep Documents); do
     echo "${line}"
done

现在的问题是,有些文件的名称中包含空格,在这种情况下,for循环将它们视为2行。

如何在for循环定义中转义空格,以使每个文件占一行?

1 个答案:

答案 0 :(得分:2)

这可能会解决您的问题:

while IFS= read -r -d $'\n'
do
  echo "${REPLY}"
done < <(ios-deploy --id UUID --bundle_id BUNDLE -l | grep Documents)

根据Charles Duffy条推荐内容进行编辑:

while IFS= read -r line
do
  echo "${line}"
done < <(ios-deploy --id UUID --bundle_id BUNDLE -l | grep Documents)