Відповіді:
Не розбирайтеls
. Також не використовуйте ALL_CAPS_VARS
for i in "$incoming_dir"/*"$business_date"*; do
В інтерактивному режимі ls
є -d
параметр, який запобігає попаданню в підкаталоги:
ls -d $INCOMINGDIR/*$BUSSINESSDATE*
"${i}"
. Ніколи не знаєш, що може бути i
.
my_file.doc[newline]another_persons_file.doc
і сподіватися, що деякі сценарії можуть спробувати "rm" те, що він вважає двома іменами ... Посилання Glenn обов'язково читається (на mywiki.wooledge.org, кожен повинен прочитати весь фак, а також сторінка підводних каменів)
ls -d .*
Немає причин, чому ця команда повинна бути рекурсивною. Але якщо $INCOMINGDIR/*$BUSSINESSDATE*
відповідає каталогу, то вміст цього каталогу відображається замість самого каталогу. Але не було б рекурсії поза цим рівнем.
Використовуйте цю команду, щоб уникнути цього ефекту:
ls -d "$INCOMINGDIR/"*"$BUSSINESSDATE"*
for ... in
команди з ls
виведенням ризиковані.
Загалом, find
здається, краще рішення або
for i in "$INCOMINGDIR/"*"$BUSSINESSDATE"*
printf %s\\n "$INCOMINGDIR/"*"$BUSINESSDATE"*