shell文件测试,菜单表示思想
---恢复内容开始---
文件测试表达式
-f 文件存在且为普通文件
-d 文件存在且为目录文件
-s 文件大小不为0则真
-e 文件存在则真
-r 文件存且可读 #文件属性对于root有时不好用
-w 写
-x 执行
-L 存在且为链接文件
f1 -nt f2 f1比f2新则为真
f1 -ot f2 f1比f2旧则为真
这些操作符可用于[[]],[],test几乎通用,更多操作符查看man test.
生产事例:
prog="rpcbind"
[ -f /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog #如果存在则加载
[ -f /etc/sysconfig/$prog ] || exit 1 #不存在退出
事例2,大括号可执行多个命令
[ $q -eq 3 ]&&{
echo 1
echo 2
echo 3
}
判断是否为整数:去掉“非数字”是否等于本身 ["`echo "123a|sed -r 's#[^0-9]##g'`" = "123a"]
#!/bin/sh
read -p "pls input two num :" num1 num2
a=num1
b=num2
#no.1
[ $# -ne 2 ]&&{ #"$#"表示输入的变量个数
echo "usage: num1 num2"
exit 1
}
#no.2
["`echo "$a"|sed -r 's#[^0-9]##g'`" = "$a" ]||{
echo "first arg must be int"
exit 2
}
#no.3
[ $1 -lt $b ]&&{
echo "$a<$b"
exit 3
}
企业综合事例:1.当用户输入1时,输出“start install lamp。” 然后执行/server/script/lamp.sh,脚本内容输出 “lamp is install”后退出脚本
2。当用户输出2时,输出“start install lnmp。” 然后执行/server/script/lnmp.sh,脚本内容输出 “lnmp is install”后退出脚本
3.当输入3时,退出当前菜单及脚本
4.当输入任何其他自负,给出提示“input error”后 退出脚本
5.要对执行的脚本进行条件判断,例如:脚本是否存在,是否可执行等。
打印简单选择菜单示例1,
cat <<END
1.wangfei
2.gongli
END
read -p "which do you like?:" a
echo "i guess,you like $a"
打印简单选择菜单示例2,函数写法,
menu(){
cat <<END
1.[install lamp]
2.[install lnmp]
3.[exit]
pls input the num you want:
END
}
menu
read num
[ "$num" = "1" ]&&{
echo "start install lamp."
[ -x /server/script/lamp.sh ]||{
echo "lamp.sh error"
exit 2}
. /server/script/lamp.sh
}
[ "$num" = "3" ]&&{
echo "bye"
exit 0
}
echo "Iput Error"
exit 1
打印多级菜单示例:
cat << EOF
|-----------System Infomation-----------
| DATE :$DATE
| HOSTNAME :$HOSTNAME
| USER :$USER
| IP :$IPADDR
| DISK_USED :$DISK_SDA
| CPU_AVERAGE:$cpu_uptime
----------------------------------------
|****Please Enter Your Choice:[0-5]****|
----------------------------------------
(1) Configure $SERVER1 Service
(2) Configure $SERVER2 Service
(3) Configure NETWORKE Service
(4) Change Passwd
(5) Logs
(0) Quit
EOF
read -p "Please enter your choice[0-5]: " input
case $input in
#web service
1)
clear
while [ "$flag" -eq 0 ]
do
cat << EOF
----------------------------------------
|****Please Enter Your Choice:[0-3]****|
----------------------------------------
(1) Start $SERVER1 Service
(2) Stop $SERVER1 Service
(3) ReStart $SERVER1 Service
(0) Back
EOF
read -p "Please enter your choice[0-3]: " input1
case $input1 in
1)
echo -e "\n>>>>>>>>>>>$DATE Start $SERVER1">>/log.txt
$SERVER1_START 2>>/log.txt
if [ $? == 0 ];then
echo "Start $SERVER1......................................................[OK]"
else
echo "Start $SERVER1......................................................[FAILED]"
fi
sleep 5
clear
;;
2)
echo -e "\n>>>>>>>>>>>$DATE Stop $SERVER1">>/log.txt
$SERVER1_STOP 2>>/log.txt
if [ $? == 0 ];then
echo "Stop $SERVER1.......................................................[OK]"
else
echo "Stop $SERVER1.......................................................[FAILED]"
fi
sleep 5
clear
;;
3)
echo -e "\n>>>>>>>>>>>$DATE ReStart $SERVER1">>/log.txt
/usr/local/tdoa/php/sbin/php-fpm restart 2>>/log.txt
$SERVER1_RESTART 2>>/log.txt
if [ $? == 0 ];then
echo "Restart $SERVER1....................................................[OK]"
else
echo "Restart $SERVER1....................................................[FAILED]"
fi
sleep 5
clear
;;
0)
clear
break
;;
*) echo "----------------------------------"
echo "| Warning!!! |"
echo "| Please Enter Right Choice! |"
echo "----------------------------------"
---恢复内容结束---
shell文件测试,菜单表示思想的更多相关文章
- Shell 文件测试运算符
文件测试运算符 文件测试运算符用于检测 Unix 文件的各种属性. 属性检测描述如下: 操作符 说明 举例 -b file 检测文件是否是块设备文件,如果是,则返回 true. [ -b $file ...
- shell 文件测试 蛮全的
文件状态测试 -b filename : 当filename 存在并且是块文件时返回真(返回0)-c filename : 当filename 存在并且是字符文件时返回真-d pathname : 当 ...
- (C#)Windows Shell 外壳编程系列7 - ContextMenu 注册文件右键菜单
原文 (C#)Windows Shell 外壳编程系列7 - ContextMenu 注册文件右键菜单 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windo ...
- shell运算符之 关系运算符,算数运算符,布尔运算符,字符串运算符和文件测试运算符
shell运算符有很多,关系运算符,算数运算符,布尔运算符,字符串运算符和文件测试运算符 1,算术运算符 原声bash 不支持简单的算术运算,可以使用expr 工具 两点注意: 表达式和运算符之间要有 ...
- shell之算数运算符、逻辑运算符、关系运算符、布尔运算符、文件测试运算符
注意事项: (1)bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用: (2)完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Es ...
- shell脚本中文件测试
shell脚本中文件测试 author:headsen chen 2017-10-17 14:35:19 个人原创,转载请注明作者,否则 依法追究法律责任 [ -f filename ] ...
- (转)shell脚本之文件测试操作符及整数比较符
shell脚本之文件测试操作符及整数比较符 原文:http://www.cnblogs.com/Steward-Xu/p/6722592.html 一.文件测试操作符: 在书写测试表达式是,可以使用一 ...
- 给文件右击菜单增加7-ZIP浏览功能(用注册表设置Shell调用预览命令)
疯狂delphi delphiXE7.XE8.XE10公开课A 群号:58592705 QQ:513187410 朱建强 BAT-给文件右击菜单增加7-ZIP浏览功能 Reg给文件右击菜单增加7-ZI ...
- shell脚本之文件测试表达式
1.文件测试表达式的用法 我们在编程时处理一个对象时,需要对对象进行测试,只有符合要求的才采取操作处理:这样做的好处是避免程序出错以及无所畏的消耗系统资源,这个测试的对象可以是文件.字符串.数字等. ...
随机推荐
- 《JavaScript Dom 编程艺术》读书笔记-第9章
SS-DOM,本章内容: style属性 如何检索样式 如何改变样式三页一体的网页 结构层:由HTML或XHTML之类的标记语言负责创建.标签(tag)也就是尖括号里的单词,对网页内容的语义含义做出了 ...
- union 和 case
UNION 指令的目的是将两个 SQL 语句的结果合并起来,可以查看你要的查询结果. CASE更多的是一种判断分类,就想其他语言的case一样 1. CASE WHEN 表达式有两种形式 --简单Ca ...
- Python基础02_基本数据类型_以及while
基本数据类型: 字符串: 字符串可以相加, 表示连接; 可以将字符串乘以某个数,表示将此字符串复制多少次. 数: 数的加减乘除取余等. 需要注意的是两个乘号**和两个除号/ / python2中的除法 ...
- Tcl脚本整理照片
我那个媳妇啊,典型的只管照不管 理,32G的卡竟然被弄满了. 费好大劲好不容易整理到电脑上,可是都是数字名字,看着都头疼,索性整理下. 首先安装tcl编译环境tcl86,度娘搞的,然后开动: proc ...
- css的性质
css两个性质: 1.继承性 2.层叠行(选择器的一种选择能力,谁的权重大就选谁) A.选不中,走继承性,(font系列.color.text系列)权重是0 a)有多个父级都设置了这样的样式 走就 ...
- What is the RESTful API ?
REST 是 RepresentationalStateTransfer 的缩写,一般中文译为 “表征状态转移”,Roy Thomas Fielding 在他2000年的PhD论文中发明了这个概念.首 ...
- 神州数码静态路由及直连网段引入到RIP协议配置(路由重定向)
实验要求:掌握静态路由及直连网段引入协议当中的配置 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface g0/6 进入端口 i ...
- eval函数解析json数据时加上圆括号的原因
var temp = eval("(" + data + ")"); //解析json数据 json是以”{}”的方式来开始以及结束的,在JS中,“{}”会被当 ...
- 集群容器管理之swarm ---集群部署
集群部署及节点管理 使用swarm前提: Docker版本1.12+ 集群节点之间保证TCP 2377.TCP/UDP 7946和UDP 4789端口通信 节点规划: 操作系统:centos7.4.1 ...
- git教程: 查看文件状态与修改内容
转载:时光机穿梭 我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed ...