- 论坛徽章:
- 0
|
红袖添香:续问.......!!!!!
...
谢谢夸奖哦~~ 
GM,你需要的用来处理回答(yes/no)的问题,已经做成子函数 yesno() ,本来是挺简单的,不过你还希望调用的命令能够不确定数目的多个,所以就用了个 cmd() 来处理一下。
下次在你自己的程序中用时,只要直接调用就好了。
yesno "提示字符串[y/n]" -c 命令1, 命令2, 命令3, …… (命令可以包含空格,但命令之间必须用逗号作分隔符)
或者把所有的命令行都放到一个文本文件中去,一个命令一行,然后调用
yesno "提示字符串[y/n]" -f 命令文件
当然,你还可以修改得更好点,以适应你的要求。
- #!/bin/sh
- # cmd() subroutine excutes commands
- cmd() {
- case $1 in
- -c) if [ ! $2 ]; then
- echo "-c : -c COMMAND LIST"
- exit 1
- else
- shift
- echo $* | awk -F, 'BEGIN{i=0} { while ( i++ < NF ) print $i}'| while read cmd; do
- echo "--------------- excute command $cmd ---------------"
- $cmd
- done
- fi
- ;;
- -f) if [ ! $2 ]; then
- echo "-f : -f FILE"
- exit 1
- else
- while read cmd; do
- echo "--------------- excute command $cmd ---------------"
- $cmd
- done < $2
- fi
- ;;
- esac
- }
- # yesno() subroutine handles user's input
- yesno() {
- printf "$1 "
- while read reply; do
- case $reply in
- y|Y) shift
- cmd $*
- break;;
- n|N) echo "OK. stop."
- break;;
- *) printf "You should type \"y\" or \"n\" [y/n] "
- continue ;;
- esac
- done
- }
- # example 1
- REQ="example1: continue~~~~~~~~~~~[y/n]"
- yesno "$REQ" -c ls *.sh, tail /var/log/messages, df -h
- # example 2
- REQ="example2: _________continue_______[y/n]"
- yesno "$REQ" -f cmd.txt
复制代码 |
|