Для выхода, если $ FILESRAW пуст:
[ $( ls "$FILESRAW" | wc -l ) -eq 0 ] && exit 0
Если этот тест предшествует циклу, он не позволит выполнению достичь цикла for, если $ FILESRAW пусто.
Когда $ FILESRAW пусто, «$ FILESRAW» / * расширяется до «/ exp / test1 / folder / *», как указывает ghostdog74, вы можете изменить это поведение, установив nullglob с
shopt -s nullglob
Если вы хотите скрытые файлы, также установите dotglob:
shopt -s dotglob
Кроме того, вы могли бы использовать ls вместо globing. Это дает преимущество работы с очень полными каталогами (при использовании канала вы не достигнете максимального предела аргументов):
ls "$FILESRAW" | while read file; do
echo "$file"
Это становится более грязным, если вы хотите скрытые файлы, так как вам нужно исключить. и .. чтобы подражать поведению globing:
ls -a "$FILESRAW" | egrep -v '^(\.|\.\.)$' | while read file; do
echo "$file"