在第一次迭代后,while循环中断

时间:2018-10-11 12:05:44

标签: shell while-loop stdout

这是我的脚本,在第一次迭代后会在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"

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

kardasz/mysql:latest
visualops/httpd:latest

他们中的大多数人将其称为STDOUT问题,因此已经尝试将>>重定向更改为“ >”,“ &>”,“ {{1 }}”,但仍然无法正常工作。

将输出重定向到&>>文件的命令将运行一分钟以上。有时它甚至不会运行第一次迭代,而只会给出空的输出。

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

1 个答案:

答案 0 :(得分:0)

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

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