Odpowiedzi:
Nie parsujls
. Również nie używać ALL_CAPS_VARS
for i in "$incoming_dir"/*"$business_date"*; do
Interaktywnie ls
ma -d
opcję, która uniemożliwia zejście do podkatalogów:
ls -d $INCOMINGDIR/*$BUSSINESSDATE*
"${i}"
. Nigdy nie wiesz, co może być i
.
my_file.doc[newline]another_persons_file.doc
i mieć nadzieję, że niektóre skrypty mogą spróbować „rm”, co uważa za 2 nazwy plików ... Link Glenna jest koniecznością do przeczytania (na mywiki.wooledge.org każdy powinien przeczytać cała FAQ, a także strona pułapek)
ls -d .*
Nie ma powodu, dla którego to polecenie powinno być rekurencyjne. Ale jeśli $INCOMINGDIR/*$BUSSINESSDATE*
pasuje do katalogu, wówczas zawartość tego katalogu jest wyświetlana zamiast samego katalogu. Ale nie byłoby rekurencji poza tym poziomem.
Użyj tego polecenia, aby uniknąć tego efektu:
ls -d "$INCOMINGDIR/"*"$BUSSINESSDATE"*
for ... in
polecenia z ls
wyjściem są ryzykowne.
Ogólnie find
wydaje się lepsze rozwiązanie lub
for i in "$INCOMINGDIR/"*"$BUSSINESSDATE"*
printf %s\\n "$INCOMINGDIR/"*"$BUSINESSDATE"*