通过 Shell 脚本回答“输入您的选择:[1-3]”

通过 Shell 脚本回答“输入您的选择:[1-3]”

我的 shell 脚本有问题。我尝试控制安装。安装过程中有几个问题需要回答。例如:“输入您的选择 [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

你可以用这里是文档

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

n
2
1
1
1
EOF

或者

./buildgcc.sh <<EOF
y
n

n
2
1
1
1
EOF

答案2

echo将打印到标准输出,即您在终端中看到的内容。您必须将数据通过管道传输到应用程序的标准输入中,通常使用|

echo 1 | your-prog-here

也许你应该使用预计,但它是您必须学习的一种新的编程语言。

答案3

$ read -p 'Gimme a B: ' b
bee
$ echo $b
bee

答案4

如果我很好地理解了你的查询,我经常使用这种代码:

_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 个字符。

不要忘记事先声明你的函数。

相关内容