Ответ “Вводит Ваш Coice: [1-3]” с помощью Сценария оболочки

У меня есть проблема в моем сценарии оболочки. Я пытаюсь управлять установкой. Во время установки существует несколько вопросов, на которые нужно ответить. Как: "Введите свой Выбор [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
3
задан 19.01.2011, 18:18

4 ответа

Можно часто делать это со здесь документ:

cat <<EOF | ./buildgcc.sh
y
n

n
2
1
1
1
EOF

или

./buildgcc.sh <<EOF
y
n

n
2
1
1
1
EOF
1
ответ дан 07.12.2019, 23:43

echo распечатает к стандартному выводу, то есть, что Вы видите в терминале. Необходимо передать данные по каналу в стандартный вход приложения, обычно с |.

echo 1 | your-prog-here

Возможно, необходимо использовать, ожидают, но это - новый язык программирования, который необходимо будет выучить.

3
ответ дан 07.12.2019, 23:43

Если я хорошо понял Ваш запрос, я часто использую этот вид кода:

_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 символа.

Не забывайте объявлять свою функцию прежде.

1
ответ дан 07.12.2019, 23:43
$ read -p 'Gimme a B: ' b
bee
$ echo $b
bee
1
ответ дан 07.12.2019, 23:43

Теги

Похожие вопросы