实例1:写shell脚本定义函数设置环境变量路径
prepend() {
[ -d “$2” ] && eval $1="$2${$1:+’:’$$1}" && export $1
}
执行 prepend PATH /opt/myapp/bin
说明:脚本解释
1、执行 prepend PATH /opt/myapp/bin
函数名 第一参数$1 第二参数$2
2、程序的执行过程
[ -d “$2” ] 判断第二参数$2是否为目录如果为真则执行 eval $1="$2${$1:+’:’$$1}"
&& 第一条件成立执行下一个
eval $1="$2${$1:+’:’$
1
}
e
v
a
l
命
令
是
重
新
运
算
求
出
参
数
的
内
容
是
将
第
一
的
参
数
所
制
定
值
的
变
量
设
置
成
第
二
个
参
数
的
值
加
上
"
:
"
(
路
径
分
隔
符
;
随
后
再
跟
上
首
个
参
数
的
原
始
值
是
转
义
特
殊
字
符
如
“
1\} eval 命令是重新运算求出参数的内容 是将第一的参数所制定值的变量设置成第二个参数的值加上" : " (路径分隔符;随后再跟上首个参数的原始值 \ 是转义特殊字符 如“
1}eval命令是重新运算求出参数的内容是将第一的参数所制定值的变量设置成第二个参数的值加上":"(路径分隔符;随后再跟上首个参数的原始值 是转义特殊字符如“”
{$1:+’:’$$1} 判断$1 为空则使用$$1
传参后的结果
eval
PATH = " /opt/myapp/bin KaTeX parse error: Expected '}', got 'EOF' at end of input: {PATH:+':'PATH}"
PATH
实例2:监控web 服务是否正常
#!/bin/sh
if [ "netstat -lnt | grep 80|awk -F "[ :]+" "] '{print $5}'
" = “80”]
#if [ lsof -i tcp:80|wc -l
-gt 0 ] 本地监控
#if [ ps -ef |grep httpd|grep -v grep|wc -l
-gt 0 ]
#if [ ss -lntup|grep httpd| wc -l
-gt 0 ]
wget -T 10 -q --spider http://192.168.0.101 >&/dev/null
curl -s http://192.168.0.101>/dev/null
if [ $? -eq 0 ]
echo “httpd is running”
else
echo “httpd is not running”
/app/apache/bin/apachect1 start
fi
要点说明:
curl 命令 curl是一个利用URL规则在命令行下工作的文件传输工具;命令行访问网站
参数
-s/–silent 静音模式。就是不显示错误和进度
wget 命令inux wget是一个下载文件的工具,它用在命令行下
-T,–timeout=SECONDS 设置超时时间 默认是秒
-q,–quiet 不显示输出信息
–spider 测试是否能正常访问
-t, --tries=NUMBER 设定最大尝试链接次数(0 表示无限制).