# 输入或通过命令行传入一个字符或数字,如果传入的数字等于1,就打印1;如果等于2,就打印2;如果不等于1也不等于2,就提示输入不对,然后退出程序。# 使用read读入内容方案。[root@backup ~]# cat 6_34_1.sh#!/bin/shecho -n "pls input a char:"read var
["$var"=="1"]&&{echo1exit0}["$var"=="2"]&&{echo2exit0}["$var"!="2" -a "$var"!="1"]&&{echo error
exit0}[root@backup ~]# sh 6_34_1.sh
pls input a char:1
1[root@backup ~]# sh 6_34_1.sh
pls input a char:2
2[root@backup ~]# sh 6_34_1.sh
pls input a char:4
error
# 使用脚本命令行传参读入内容的解决方案[root@backup ~]# cat 6_34_2.sh#!/bin/shvar=$1["$var"=="1"]&&{echo1exit0}["$var"=="2"]&&{echo2exit0}["$var"!="2" -a "$var"!="1"]&&{echo error
exit0}[root@backup ~]# sh 6_34_2.sh 11[root@backup ~]# sh 6_34_2.sh 22[root@backup ~]# sh 6_34_2.sh 4
error
# 开发Shell脚本,分别实现以脚本传参和read读入的方式比较两个整数的大小。用条件表达式(禁止用if)进行判断并以屏幕输出的方式提醒用户比较的结果。注意:一共是开发两个脚本。在用脚本传参和read读入的方式实现时,需要对变量是否为数字及传参个数是否正确给予提示# 采用read方法[root@backup ~]# cat 6_35_1.sh#!/bin/shread -p "PLs input two num:" a b
# no1[ -z "$a"]||[ -z "$b"]&&{echo"PLs input two num again."exit1}# no2expr$a + 10&>/dev/null
RETVAL1=$?expr$b + 10&>/dev/null
RETVAL2=$?test$RETVAL1 -eq 0 -a $RETVAL2 -eq 0||{echo"Pls input two "num" again."exit2}# no3[$a -lt $b]&&{echo"$a < $b"exit0}# no4[$a -eq $b]&&{echo"$a = $b"exit0}# no5[$a -gt $b]&&{echo"$a > $b"}[root@backup ~]# sh 6_35_1.sh
PLs input two num:6 26>2[root@backup ~]# sh 6_35_1.sh
PLs input two num:6 66=6[root@backup ~]# sh 6_35_1.sh
PLs input two num:2 62<6[root@backup ~]# sh 6_35_1.sh
PLs input two num:
PLs input two num again.
[root@backup ~]# sh 6_35_1.sh
PLs input two num:dd ff
Pls input two num again.
# 通过命令行传参的方法实现[root@backup ~]# sh 6_35_2.sh
USAGE:6_35_2.sh NUM1 NUM2
[root@backup ~]# sh 6_35_2.sh 6 26>2[root@backup ~]# sh 6_35_2.sh 6 66=6[root@backup ~]# sh 6_35_2.sh 2 62<6[root@backup ~]# cat 6_35_2.sh#!/bin/sha=$1b=$2# no1[$# -ne 2]&&{echo"USAGE:$0 NUM1 NUM2"exit1}# no2expr$a + 10&>/dev/null
RETVAL1=$?expr$b + 10&>/dev/null
RETVAL2=$?test$RETVAL1 -eq 0 -a $RETVAL2 -eq 0||{echo"Pls input two "num" again."exit2}# no3[$a -lt $b]&&{echo"$a < $b"exit0}# no4[$a -eq $b]&&{echo"$a = $b"exit0}# no5[$a -gt $b]&&{echo"$a > $b"}# 打印选择菜单,按照选择项一键安装不同的Web服务# 示例菜单:# 1.[install lamp]# 2.[install lnmp]# 3.exit# pls input the num you want:# 要求:# 1)当用户输入1时,输出"start installing lamp"提示,然后执行`/server/scripts/lamp.sh`输出"lamp is installed",并退出脚本,此为工作中所用的lamp一键安装脚本。# 2)当用户输入2时,输出"start installing lnmp"提示,然后执行`/server/scripts/lnmp.sh`输出"lnmp is installed",并退出脚本,此为工作中所用的lnmp一键安装脚本。# 3)当输入3时,退出当前菜单及脚本# 4)当输入任何其他字符时,给出提示"Input error"后退出脚本。# 5)对执行的脚本进行相关的条件判断,例如:脚本文件是否存在,是否可执行等的判断,尽量使用前面讲解过的知识点[root@backup ~]# cat 6_36_1.sh cat<<END
1.panxiaoting
2.gongli
3.fanbinbing
END
read -p "Which do you like?Pls input the num:" a
["$a"="1"]&&{echo"I guess,you like panxiaoting"exit0}["$a"="2"]&&{echo"I guess,you like gongli"exit0}["$a"="3"]&&{echo"I guess,you like fangbingbing"exit0}[[!"$a"=~ [1-3]]]&&{echo"I guess,you are not man."}[root@backup ~]# sh 6_36_1.sh1.panxiaoting
2.gongli
3.fanbinbing
Which do you like?Pls input the num:1
I guess,you like panxiaoting
[root@backup ~]# sh 6_36_1.sh1.panxiaoting
2.gongli
3.fanbinbing
Which do you like?Pls input the num:2
I guess,you like gongli
[root@backup ~]# sh 6_36_1.sh1.panxiaoting
2.gongli
3.fanbinbing
Which do you like?Pls input the num:3
I guess,you like fangbingbing
[root@backup ~]# sh 6_36_1.sh1.panxiaoting
2.gongli
3.fanbinbing
Which do you like?Pls input the num:4
I guess,you are not man.
# [root@backup ~]# sh menu.sh 1.[install lamp]2.[install lnmp]3.[exit]
pls input the num you want:
[root@backup ~]# cat menu.shmenu(){cat<< END
1.[install lamp]2.[install lnmp]3.[exit]
pls input the num you want:
END
}
menu
# 正式[root@backup ~]# mkdir -p /server/scripts[root@backup ~]# cd /server/scripts/[root@backup scripts]# echo "echo lamp is installed" >lamp.sh[root@backup scripts]# echo "echo lnmp is installed" >lnmp.sh[root@backup scripts]# chmod +x lnmp.sh lamp.sh[root@backup scripts]# cat 6_36_2.sh #!/bin/shpath=/server/scripts
[! -d "$path"]&&mkdir$path -p
#menucat<<END
1.[install lamp]2.[install lnmp]3.[exit]
pls input the num you want:
END
read num
expr$num + 1&>/dev/null
[$? -ne 0]&&{echo"the num you input must be {1|2|3}"exit1}[$num -eq 1]&&{echo"start installing lamp."sleep2;[ -x "$path/lamp.sh"]||{echo"$path/lamp.sh does not exist or can not be exec."exit1}$path/lamp.sh
exit$?}[$num -eq 2]&&{echo"start installing lnmp."sleep2;[ -x "$path/lnmp.sh"]||{echo"$path/lnmp.sh does not exist or can not be exec."exit1}$path/lnmp.sh
exit$?}[$num -eq 3]&&{echo bye.
exit3}[[!$num=~ [1-3]]]&&{echo"the num you input must be {1|2|3}"echo"Input ERROR"exit4}