Наступний фрагмент 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