У меня есть переменная с именем var, которая хранит список файлов в каталоге. Я перебираю все файлы, и если я нахожу каталог, я выводю "Каталог" на экран. код ниже:
var=$(ls dir)
for file in $var; do
if [ -d $dir/$file ]; then
echo "Directory"
fi
done
У меня есть 2 вопроса:
Во-первых, я делаю это внутри функции и хочу, чтобы переменная $ file оставалась локальной, поэтому, когда моя функция заканчивается, я не получаю к ней доступ. Как я могу установить эту локальную переменную? Я не могу сделать for local file in $var;
и я не могу объявить $ file перед циклом.
2-й - Мой цикл не работает, когда $(ls dir)
содержит файл с пробелом внутри имени. Например, если $dir
имеет 3 файла, файл1, файл 2 и файл3, $var
будет содержать только файлы1 и файл3 как реальные файлы, но файл 2 не будет работать, поскольку разделит его на файл и файл 2. Как я могу исправить проблему с файлами, в именах которых есть место?