我的 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
答案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 个字符。
不要忘记事先声明你的函数。