Всем привет. Сразу оговорюсь, я не айтишник, я музыкант, поэтому многое из того что для вас просто, для меня - темный лес. Теперь к делу. У меня есть скрипт с esac, который в зависимости от расширения файла выполняет над ним ту или иную команду. tar для архивов, mplayer для видосиков и т.д. Использую как пейджер в mc. Но для файлов *.imd у меня есть два действия, fuseiso и kpartx, сейчас я просто ручками перед монтированием коменчу ту или другую строку, а надо автоматизировать этот момент. Идея такая: в базовом скрипте на *.img я укажу выполнить другой скрипт, который должен дать мне выбор, если я нажму 1 - выполнить fuseiso, если нажму 2 - kpartx. И вот как это сделать, ума не приложу. Из того, что удалось нагуглить, есть команда read, у меня получается сделать так, чтобы скрипт ожидал ввода единицы или двойки, но за этим ничего не следует! Как сделать, чтобы работало? Подскажите, пожалуйста, или киньте ссылку на хороший ликбез.
UPD
Я опять справился сам)
Заработало в итоге вот так (я подредактировал код из примера, поэтому такие переменные):
#!/bin/bash
asksure() {
echo -n "fuseiso 1 kpartx 2 "
while read -r -n 1 -s answer; do
if [[ $answer = ["12"] ]]; then
[[ $answer = ["1"] ]] && retval=0
[[ $answer = ["2"] ]] && retval=1
break
fi
done
echo # just a final linefeed, optics...
return $retval
}
### using it
if asksure; then
fuseiso "$1" ~/mnt
else
sudo kpartx -av "$1" && sudo mount /dev/mapper/loop0p1 ~/mnt2 && cp -rv ~/mnt2/* ~/mnt && sudo umount ~/mnt2 &
& sudo kpartx -ad "$1"
fi
И мне теперь интересно, насколько это все лютый костыль, и можно ли было сделать по другому?