我们在Debian服务器上运行一个脚本,它抓取目录中的文件名并将它们推送到我们的API。当文件名没有空格时,它运行正常。这个常见问题的常见答案是在变量名称周围使用双引号。
但是,我无法为下面的特定案例代码找到一个整洁,简洁和明确的解决方案。虽然this answer建议将分隔符从空格更改为\n
,但我宁愿在现有代码中使用双引号方法。
files=("$(ls $directory)") #$directory has the files we want to loop through
if [ ${#files[@]} -gt 0 ]; then
getToken
for i in $files
do
echo "$i"
uploadFiles "$i"
done
exit
else
echo "No files to upload"
exit
fi
答案 0 :(得分:3)
要处理包含空格的文件,请编写脚本:
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