Відповідь "Введіть свій вибір: [1-3]" за допомогою сценарію Shell


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

1
для вашого питання є функція редагування, будь ласка, навчіться використовувати його замість того, щоб додавати "відповіді", щоб додати більше інформації
Іво Фліпс

Відповіді:



3

echoнадрукує на стандартний вихід, тобто те, що ви бачите в терміналі. Як правило, вам потрібно передавати дані на стандартний вхід вашої програми |.

echo 1 | your-prog-here

Можливо, ви повинні використовувати очікувати , але це нова мова програмування, яку вам доведеться вивчити.



1

Якщо я добре зрозумів ваш запит, я часто використовую такий код:

_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. Для bash, це те, -n 1що сказати, щоб прочитати, щоб чекати лише 1 символу.

Не забудьте заявити про свою функцію раніше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.