У меня есть проблема в моем сценарии оболочки. Я пытаюсь управлять установкой. Во время установки существует несколько вопросов, на которые нужно ответить. Как: "Введите свой Выбор [1-3]:"
Я хочу, делают что-то вроде этого:
--> It's my first script <--
#!/bin/bash
echo "--> Install packages <--"
sudo apt-get install git
cd $HOME/
#mkdir mspgcc_download
#cd mspgcc_download
echo "--> Download mspgcc <--"
git clone git://mspgcc4.git.sourceforge.net/gitroot/mspgcc4/mspgcc4
cd mspgcc4
echo "--> Build mspgcc <--"
echo "y" | echo "n" | echo "" | echo "n" | echo "2" | echo "1" | echo "1" | echo "1" | ./buildgcc.sh
Можно часто делать это со здесь документ:
cat <<EOF | ./buildgcc.sh
y
n
n
2
1
1
1
EOF
или
./buildgcc.sh <<EOF
y
n
n
2
1
1
1
EOF
echo
распечатает к стандартному выводу, то есть, что Вы видите в терминале. Необходимо передать данные по каналу в стандартный вход приложения, обычно с |
.
echo 1 | your-prog-here
Возможно, необходимо использовать, ожидают, но это - новый язык программирования, который необходимо будет выучить.
Если я хорошо понял Ваш запрос, я часто использую этот вид кода:
_answer=''
while [ -z ${_answer} ]
do
# I check if Bash or Ksh is used
if [ "x${BASH_VERSION}" != "x" -a "x${KSH_VERSION}" = "x" ]; then
# Bash
read -n 1 -p "Your choice [1-3] : " _answer
else
# KSH
read _answer?"Your choice [1-3] : "
fi
clear
case "${_answer}" in
1) function1 ;;
2) function2 ;;
3) function3 ;;
*) _answer='' ;;
esac
done
Различие в синтаксисе чтения, позвольте нам, Вы только вводите символ на Bash, но необходимо ввести введение в конце с KSH. Для удара это -n 1
это говорит для чтения, чтобы только ожидать 1 символа.
Не забывайте объявлять свою функцию прежде.