While 循环在第一次迭代后中断

While loop breaks after the first iteration

这是我的脚本,在第一次迭代后while loop中断

while IFS='' read -r line
do
cd /root/clair-container-scan
image_name=$(echo $line|cut -d '/' -f2|cut -d ':' -f1)
sh clair-container-scan.sh $line >> /root/clair-container-scan/$image_name.log
done < ""

$1 指的是具有以下输入的文件。

kardasz/mysql:latest
visualops/httpd:latest

他们中的大多数人将此归因于 STDOUT 问题,因此已经尝试将 >> 重定向更改为“>”、“&>”、“&>>" 但还是不行。

将输出重定向到 .log 文件的命令将 运行 持续一分多钟。有时它甚至不会 运行 第一次迭代,只会给出一个空输出。

有人可以帮我理解脚本中的错误吗?

已通过使用 for 循环和读取数组解决了该问题。问题实际上是 while 循环读取的行,它有像“/:”这样的特殊字符

filename=
readarray images < "$filename"
for line in "${images[@]}"
do
echo ""
done