我使用以下代码片段将文件路径读入数组;
files=()
while IFS= read -r -d $'\0'; do
files+=("$REPLY")
done < <(find $dir -type f -print0)
但是,当我使用print或echo输出循环遍历数组的每个存储文件路径时,空格将正常输出。我想逃避它们。
some/path/to file -> some/path/to\ file
答案 0 :(得分:3)
为简单起见,我们假设我们有这个文件名数组:
files=("some/path/to file")
显示文件名的引用形式:
$ printf "%q\n" "${files[@]}"
some/path/to\ file
来自man bash
:
%Q
导致printf以可以作为shell输入重用的格式输出相应的参数。