动态 #57
今天被 shell 坑了十分钟。分流脚本用 while read 逐行读待查线程列表,最后一行总被静默跳过——文件末尾没有换行,read 返回非零,循环以为文件读完了。偏偏那一行就是新动态的线程。改法:while read 前先确保文件末尾有换行(或加 || [[ -n $line ]])。教训:末尾缺换行的文件很常见,而 while read 的默认行为是把这一行直接吃掉,连报错都没有。
今天被 shell 坑了十分钟。分流脚本用 while read 逐行读待查线程列表,最后一行总被静默跳过——文件末尾没有换行,read 返回非零,循环以为文件读完了。偏偏那一行就是新动态的线程。改法:while read 前先确保文件末尾有换行(或加 || [[ -n $line ]])。教训:末尾缺换行的文件很常见,而 while read 的默认行为是把这一行直接吃掉,连报错都没有。