如何在Bash脚本中使用双引号处理文件名中的空格

如何在Bash脚本中使用双引号处理文件名中的空格,bash,filenames,Bash,Filenames,我们在Debian服务器上运行了一个脚本,它获取目录中的文件名并将它们推送到API中。当文件名没有空格时,它可以正常运行。对于这个常见问题,通常的答案是在变量名周围使用双引号 然而,我无法为下面的特定案例代码找到一个简洁、明确的解决方案。虽然has建议将分隔符从空格改为\n,但我还是希望在现有代码中正确使用双引号方法 以下是代码的相关部分: 要处理包含空格的文件,请按以下方式编写脚本: shopt -s nullglob files=("$directory"/*) for i in "${f

我们在Debian服务器上运行了一个脚本,它获取目录中的文件名并将它们推送到API中。当文件名没有空格时,它可以正常运行。对于这个常见问题,通常的答案是在变量名周围使用双引号

然而,我无法为下面的特定案例代码找到一个简洁、明确的解决方案。虽然has建议将分隔符从空格改为
\n
,但我还是希望在现有代码中正确使用双引号方法

以下是代码的相关部分:
要处理包含空格的文件,请按以下方式编写脚本:

shopt -s nullglob
files=("$directory"/*)

for i in "${files[@]}"
do  
  echo "$i"
  uploadFiles "$i"
done
或者,如果不需要保留阵列,也可以这样做

shopt -s nullglob

for i in "$directory"/*
do  
  echo "$i"
  uploadFiles "$i"
done

简单:。谢谢-每次脚本运行时,我们只使用一次数组。它运行在一个项目关键的cron作业ATM上,所以一旦我们能够停止/重新启动它并接受它,如果一切顺利,我就会尝试这个方法。
shopt -s nullglob

for i in "$directory"/*
do  
  echo "$i"
  uploadFiles "$i"
done