Я хочу написать сценарий bash, и мне нужно получить имена файлов в каталоге, и я сделал это:
list=`ls -p -m -1 $dir | grep -v /`
list=`echo $list | tr ' ' ','`
IFS=',' read -ra list_array <<< $list
Если в текущем каталоге нет файла с пробелами, то переменная list_array
содержит правильный разделенный пробелами массив имен файлов:
$ echo "${list_array[*]}"
a a.rar a.tar a.zip blah blah blah
Но это не будет работать правильно в ситуациях, когда существуют некоторые файлы с пробелами в именах. Чтобы смягчить это, я изменил это следующим образом:
list=`ls -p -m $dir | grep -v /` #This doesn't work in for filenames without whitespace
IFS=',' read -ra list_array <<< $list
Но теперь list_array
содержит только имя первого файла.
Любая помощь очень ценится.