放在set -x
该行下方#!
以查看您的脚本在做什么。
如果没有匹配的文件,则通配符不展开,循环运行一次,file
值为DATA_FILE_PUT_*.CSV
.
要更改它,请设置 nullglob 选项。请注意,这只适用于 bash,不适用于 sh。
shopt -s nullglob
putfile=DATA_FILE_PUT_*.CSV
for file in $putfile; do let filecnt=filecnt+1; done
请注意,该putfile
变量包含通配符模式,而不是文件名列表。将匹配列表放在变量中可能更有意义。这需要是一个数组变量,并且您需要先更改当前目录。匹配文件的数量就是数组的长度。
#!/bin/bash
shopt -s nullglob
outbound=/home/user/outbound/
cd "$outbound"
putfiles=(DATA_FILE_PUT_*.CSV)
echo "Filecount: " ${#putfiles}
如果您需要遍历文件,请注意使用双引号保护数组的扩展,否则如果文件名包含空格,则它将被拆分为多个单词(如果文件名包含通配符,它们将被扩展)。
#!/bin/bash
shopt -s nullglob
outbound=/home/user/outbound/
cd "$outbound"
putfiles=(DATA_FILE_PUT_*.CSV)
for file in "${putfiles[@]}"; do
echo "Processing $file"
done