#!/bin/bash
IFS='\n'
declare -i count=0
AX=$(find *.iso -maxdepth 1 -type f) # Rather use AX="$(find *.iso -maxdepth 1 -type f"?
# A="${AX%x}" < Could I use this when applying "" to $() in AX? But it should already include newlines like this way. edit: I don't need the trailing newlines fix.
for iso in "$AX"
do
echo "Use "$iso"? [Y/N]?" # Outputs ALL files, IFS has no force somehow
read choiceoffile
shopt -s nocasematch
case $choiceoffile in
y ) echo "Using selected file.";;
* ) continue;;
esac
# some sort of processing
done
Правильно ли выполнена подстановка команд? Переменная не работает с IFS \n в цикле for, я не понимаю, почему это происходит.
Предполагается, что цикл for обрабатывает имена файлов с пустым пространством, обрабатывая вывод find построчно (поэтому я использую IFS\n).
.iso
файлов, а затем используетеfind
для получения.wbfs
файлов? Не было бы проще просто перебрать оба и подсчитать iso-файлы и использовать массив для файлов wbfs, а затем просто использовать индексирование смещения массива, чтобы получить желаемое количество?case $image in *.iso) count+=1;; *.wbfs) files+=("$image");; esac
, а затем"${files[@]:$count}"
? - person Etan Reisner   schedule 08.07.2015find
? Вы получаете количество каждого iso-файла из цикла, а затем используете поиск и ограничиваете его вывод точно таким же количеством? - person Etan Reisner   schedule 08.07.2015.iso
файлов из-за своих аргументов. Цикл также найдет только.iso
файлов.find
ищет только текущий каталог, поэтому они всегда должны находить одни и те же файлы. Я не понимаю, в чем здесь смысл? Если вам нужен список всех.iso
файлов в одном каталоге, просто выполнитеisos=(*.iso)
и покончите с этим. Затем зациклитесь наfor iso in "${isos[@]}"; do
, и не нужно возиться сIFS
, не нужно использоватьfind
, нет игр и все имена файлов безопасны. - person Etan Reisner   schedule 08.07.2015$AX
, поэтому оно не разделяется на слова для цикла. При этом весь этот подход, как я только что сказал, очень запутан. - person Etan Reisner   schedule 08.07.2015find
вводит проблемы с пробелами. - person Etan Reisner   schedule 08.07.2015