我正在尝试编写一个包含多个命令的脚本,系统会提示用户提前运行这些命令,并根据用户输入运行这些命令的动态集合
因此,举个例子,我设置了我需要运行的命令的函数
command1 () { some_command; }
command2 () { some_command; }
command3 () { some_command; }
command4 () { some_command; }
接下来是一系列提示
Do you want to run command1?
Do you want to run command2?
Do you want to run command3?
Do you want to run command4?
对于这个例子,假设Y,N,Y,Y,所以我需要运行command1,command3,command4 我希望能够明白这一点。
非常感谢任何协助。
答案 0 :(得分:1)
read -p "Do you want to run command1? " c1
read -p "Do you want to run command2? " c2
read -p "Do you want to run command3? " c3
read -p "Do you want to run command4? " c4
if [ "$c1" = "Y" ]; then
command1
fi
if [ "$c2" = "Y" ]; then
command2
fi
if [ "$c3" = "Y" ]; then
command3
fi
if [ "$c4" = "Y" ]; then
command4
fi
答案 1 :(得分:1)
您可能(或可能不想)考虑select
内置:
select
select构造允许轻松生成菜单。它差不多了 语法与for命令相同:
select name [in words ...]; do commands; done
展开后面的单词列表,生成项目列表。这套 扩展的单词打印在标准错误输出流上,每个都在前面 一个数字。如果省略'in words',则打印位置参数, 好像'in'$'“'已被指定。然后显示PS3提示并显示一行 从标准输入读取。如果该行包含一个对应的数字 对于其中一个显示的单词,则将name的值设置为该单词。如果 该行为空,再次显示单词和提示。如果读取EOF, select命令完成。读取的任何其他值都会导致设置名称 为空。读取的行保存在变量REPLY中。
每次选择后执行命令,直到执行break命令 执行,此时select命令完成。
答案 2 :(得分:0)
read命令正是您所需要的http://www.vias.org/linux-knowhow/bbg_sect_08_02_01.html
简短的例子
将用户输入应用于变量'foo'
# Just showing a nice message along with it.
echo -n "Would you like to run command1? (Y/N) "
read foo
然后你可以测试foo变量的值
if [ "$foo" == "Y" ]; then
command1
fi
答案 3 :(得分:0)
如果您将用户输入转换为一系列变量(使用the other answer中详细说明的读取命令),每个命令一个(调用它们,例如C1,C2,C3)然后在您之后在用户输入时,您可以编写一系列if语句来查看这些变量的值
if [ $C1 == "Y" ]; then
command1
fi
if [ $C2 == "Y" ]; then
command2
fi
if [ $Cn == "Y" ]; then
commandN
fi
这有帮助吗?