Вы упомянули пустую строку во входном файле; если он находится в /tmp/inventory2.list, то в этом проблема.
Работайте несколькими способами; можно было бы протестировать переменную $ env, прежде чем пытаться ее использовать:
[ -n "$env" ] && hosts["$env"]+="$certname"$'\n'
Другой - выполнить grep для любого символа в файле перед его чтением:
grep . inventory2.list | while IFS='| ' read -r env certname; do
hosts["$env"]+="$certname"$'\n'
done
(отрегулируйте grep, если в вашей «пустой» строке есть пробелы; например grep [az]
)
Вместо использования find
вы можете просто просмотреть сами файлы. Обратите внимание, что у меня есть двойные кавычки -"$r"
; вам нужно сделать это, чтобы пространство в именах файлов оставалось нетронутым и не анализировалось оболочкой.
for r in *.fastq
do
# Stuff using "$r"...
:
done