逻辑开发应用实例
-
限制输入只能是1或2的数字
################ [root@localhost shell_rpo]# sh test_andor2.sh please input a charf ######录入了字符f出现了报错的情况,初步估计是,判断逻辑的1和2加了引号的缘故,表示数字比较 test_andor2.sh: 第 9 行:[: f: 期待整数表达式 test_andor2.sh: 第 24 行:[: f: 期待整数表达式 [root@localhost shell_rpo]# cat test_andor2.sh #!/bin/bash read -p "please input a char" var1 #逻辑条件测试 [ "${var1}" -eq "1" ] &&{ echo $var1 exit 0 ###正确执行返回玛用0表示;并退出 } [ "${var1}" \= "2" ] &&{ echo ${var1} exit 0 } ####再限制只能录入1 或 2,否则就报错 [ "${var1}" -ne "1" -a "${var1}" -ne "2" ]&& { echo "脚本出错,必须输入1或2" exit 1 } [root@localhost shell_rpo]# sh test_andor2.sh please input a char3 脚本出错,必须输入1或2 [root@localhost shell_rpo]# 1 bash: 1: 未找到命令... [root@localhost shell_rpo]# sh test_andor2.sh please input a char1 1 [root@localhost shell_rpo]# sh test_andor2.sh please input a char2 2 [root@localhost shell_rpo]# sh test_andor2.sh please input a char3 脚本出错,必须输入1或2 [root@localhost shell_rpo]# $? bash: 1: 未找到命令... [root@localhost shell_rpo]# echo $? 127 [root@localhost shell_rpo]# sh test_andor2.sh please input a char3 脚本出错,必须输入1或2 [root@localhost shell_rpo]# echo $? 1 [root@localhost shell_rpo]#
-
需求实例安装脚本
#########eg2(自个简单的安装思路)根据用户的选择,选择安装lnmp还是lamp文件;再限制用户的输入只能是1,2,3;如果是1安装lnmp如果是2安装lamp;如果是3都安装;如果是其他则推出报错; [root@localhost shell_rpo]# cat test_andor3.sh #!/bin/bash read -p "请输入安装选项1安装lnmp;选项2安装:lamp " var1 [ "${var1}" -eq "1" ]&& { cat lnmp.exe echo "安装成功" exit 0 } [ "${var1}" -eq "2" ] && { cat lamp.exe echo "安装成功" exit 0 } [ "${var1}" -eq "3" ]&&{ cat lnmp.exe cat lamp.exe echo "安装成功" exit 0 } [ "${var1}" -ne "1" -a "${var1}" -ne "2" -a "${var1}" -ne "3" ]&& { echo "录入其他选项;安装失败;系统退出" exit 1 } [root@localhost shell_rpo]# sh test_andor3.sh 请输入安装选项1安装lnmp;选项2安装:lamp 1 I am lnmp lnmp set up ... 安装成功 [root@localhost shell_rpo]# sh test_andor3.sh 请输入安装选项1安装lnmp;选项2安装:lamp 2 I am lamp lamp set up ... 安装成功 [root@localhost shell_rpo]# sh test_andor3.sh 请输入安装选项1安装lnmp;选项2安装:lamp 3 I am lnmp lnmp set up ... I am lamp lamp set up ... 安装成功 [root@localhost shell_rpo]# sh test_andor3.sh 4 请输入安装选项1安装lnmp;选项2安装:lamp 4 录入其他选项;安装失败;系统退出 [root@localhost shell_rpo]# [root@localhost shell_rpo]# cat lamp.exe ;cat lnmp.exe ###用文件内容替代安装文件 I am lamp lamp set up ... I am lnmp lnmp set up ... [root@localhost shell_rpo]# #######################################################################
-
###大佬脚本
#######################################################################
[root@localhost shell_rpo]# cat test_andor4.sh
#!/bin/bash
###根据选项安装lnmp还是lamp;录入选项限制1,2,3;
path=/root/tmp/Instal
#条件判断,判断目录是否存在,
#开发脚本,真和假两个情况,优先处理错误的逻辑情况,因为错误的情况最容易处理
[ ! -d "${path}" ]&& mkdir "${path}" -p
#开发该脚本的正常逻辑了
#感觉是将END间的内容通过cat反输入到控制台
cat << END
1. [install lamp]
2. [install lnmp]
3. [exit]
please input the number you want!
END
###接收用户输入
read num
#根据该num变量进行逻辑处理
expr $num + 1 &>/dev/null ####通过执行命令是否报错来判断是否为数字;如果报错则执行命令结果是非0;执行结果不需要所以录入黑洞文件
###判断上条命令的执行结果
####限制用户输入的必须是数字
[ $? -ne 0 ] &&{
echo "The num you input mast in {1|2|3}"
exit 1;
}
#对输入的数字是1,2,3的判断
#当输入的数字是1时的判断
[ "${num}" -eq "1" ]&& {
echo "String installing lamp ...waiting"
sleep 2;
#执行lamp.sh安装脚本
#对文件权限进行判断
[ ! -x "${path}/lamp.sh" ] && {
echo "The file does not exist or can not be exec"
exit 1
}
#通过路径执行文件,需要可执行文件权限
$path/lamp.sh
exit $? ###脚本执行后返回一个状态玛,就上次执行结果
}
###输入的数字是2的时候判断
[ "${num}" -eq "2" ]&&{
echo "start installing ......lnmp....."
sleep 2;
[ -x "$path/lnmp.sh" ]||{
echo "The file not exit or can not be exec"
exit 2;
}
$path/lnmp.sh
exit $?
}
###当录入数字是3的时候
[ "$num" -eq "3" ]&&{
echo "Bye Bye "
exit 3;
}
# 限制用户必须输入的是1,2,3
#[[]] 支持正则表达式 [[$num=~[1-3] ]]
# =~表示开始正则表达式********
[[ ! "$num" =~ [1-3] ]]&&{
echo "只能录入选项{1|2|3}"
exit 4
}
[root@localhost shell_rpo]#
[root@localhost shell_rpo]# bash test_andor4.sh 1
1. [install lamp]
2. [install lnmp]
3. [exit]
please input the number you want!
a
The num you input mast in {1|2|3}
[root@localhost shell_rpo]# bash test_andor4.sh 1
1. [install lamp]
2. [install lnmp]
3. [exit]
please input the number you want!
1
String installing lamp ...waiting
Install lamp ...end...
[root@localhost shell_rpo]# bash test_andor4.sh 1
1. [install lamp]
2. [install lnmp]
3. [exit]
please input the number you want!
2
start installing ......lnmp.....
Install lnmp ...end....
[root@localhost shell_rpo]# bash test_andor4.sh 1
1. [install lamp]
2. [install lnmp]
3. [exit]
please input the number you want!
3
Bye Bye
[root@localhost shell_rpo]# bash test_andor4.sh
1. [install lamp]
2. [install lnmp]
3. [exit]
please input the number you want!
4
只能录入选项{1|2|3}
[[]]之所以是[]的补充是因为它支持正则表达式匹配
3. 测试表达式用法参考表,参考表
测试表达式符号 | [] | test | [[]] | (()) |
---|---|---|---|---|
边界是否需要空格 | 需要 | 需要 | 需要 | 不需要 |
逻辑操作符 | !,-a,-o | !,-a,-o | !,&&,|| | !,&&,|| |
整数比较符 | -eq,-gt,-lt,-ge,-le | -eq,-gt,-lt,-ge,-le | -eq,-gt,-lt,-ge,-le或=,>,<,>=,<= | =,>,<,>=,<= |
字符串比较操作符 | =,==,!= | =,==,!= | =,==,!= | =,==,!= |
是否支持通配符匹配 | 不支持 | 不支持 | 支持 | 不支持 |
标签:shell,实例,lnmp,sh,lamp,逻辑运算,root,localhost From: https://www.cnblogs.com/xjianbing/p/17754059.html记住,最常用的就是中括号,搭配 -gt,-lt如此用法
[ $a -gt $b ]