Наступний фрагмент bash чудово працює, коли *.txt
в каталозі є фактично файли.
for txt in *.txt
do
echo "loading data from $txt"
done
Коли їх немає, буквальне значення *.txt
потрапляє в цикл як $ txt (не добре).
Як змінити цей код, щоб, коли *.txt
файлів немає , do ... done
блок пропускався?
[ "*.txt" != '*.txt' ]
завжди помилково - обидва рядки є лапками, тому жодна з них не перевіряється на відповідність. Якщо ви вилучите цитати з одного, у неї ... є інші проблеми.
files=$(echo *.txt)
а потім: if [ "${files}" != '*.txt' ] ; then
.
if [ "*.txt" != '*.txt' ] ; then do loop here ; fi