if判断

eq 等于
ne 不等于
ls 小于 
gt 大于
le 小于等于
ge大于等于
== 等于
-o 或者 
-a 并且
elif 再或者
else 否则

$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

functions这个脚本是给/etc/init.d里边的文件使用的,提供了一些基础的功能,看看里边究竟有些什么。首先会设置umask,path,还有语言环境,然后会设置success,failure,warning,normal几种情况下的字体颜色。下面再看看提供的重要方法:

checkpid:检查是否已存在pid,如果有一个存在,返回0(通过查看/proc目录)
daemon:启动某个服务。/etc/init.d目录部分脚本的start使用到这个
killproc:杀死某个进程。/etc/init.d目录部分脚本的stop使用到这个
pidfileofproc:寻找某个进程的pid
pidofproc:类似上面的,只是还查找了pidof命令
status:返回一个服务的状态
echo_success,echo_failure,echo_passed,echo_warning分别输出各类信息
success,failure,passed,warning分别记录日志并调用相应的方法
action:打印某个信息并执行给定的命令,它会根据命令执行的结果来调用 success,failure方法
strstr:判断1是否含有2
confirm:显示 “Start service $1 (Y)es/(N)o/(C)ontinue? [Y]”的提示信息,并返回选择结果
[root@web01 ~]# vim ping.sh +9
#!/bin/bash
. /etc/init.d/functions

ping -c 1 -w 1 "$1"  &>/dev/null
if [ $? -eq 0 ];then
        action "$1" /bin/true
else
        action "$1" /bin/false
fi

[root@web01 ~]# mv ping.sh /usr/bin/p
[root@web01 ~]# chmod u+x /usr/bin/ping.sh
[root@web01 ~]# p 10.0.0.7
10.0.0.7                                              [  OK  ]

#修改打印信息
#!/bin/bash
. /etc/init.d/functions

ping -c 1 -w 1 "$1"  &>/dev/null
if [ $? -eq 0 ];then
        echo $1:网络正常
else
        echo $1:网络不通
fi

[root@web01 ~]# p 10.0.0.31
10.0.0.31:网络正常


#!/bin/bash

id nginx &>/dev/null                 # echo $? 结果转化为数字
if [ $? -ne 0 ];then
	useradd nginx -s /sbin/nologin -M
	echo nginx用户不存在,正在创建...   
eles
	echo nginx用户已存在 			
fi


命令行判断指定路径下的文件或者目录是否存在

[root@oldboy opt]# [ -d /op ]&& echo 存在||echo 不存在  
不存在
[root@oldboy opt]# [ ! -d /op ]&& echo 不存在||echo 存在  
不存在

[ -d /op ] || xx  前面不成功,后面执行xx,,,成功了就啥也不干
[ -d /op ] && xx  前面成功了,后面执行xx,,,不成功就啥也不干

运行脚本里判断指定路径下的文件或者目录是否存在

#!/bin/bash
if [ -d /root ];then  
        echo 存在
else
        echo 不存在
fi

#!/bin/bash
if [ -f /syy ];then
        echo 存在
else
        echo 不存在
fi

命令行里使用if判断

[root@lb01 ~]# if [ -d /etc ];then echo 1 ;else echo 2;fi
1
[root@lb01 ~]# if [ -d /etcc ];then echo 1 ;else echo 2;fi
2

#判断/syy 目录或文件是否存在
[root@oldboy ~]# vim a.sh     
#!/bin/bash
. /etc/init.d/functions

if [ -d /root/syy ];then
        action '该目录已存在' /bin/true
else
        action '该目录不存在' /bin/false
fi
[root@oldboy ~]# sh a.sh 
该目录已存在                                               [  OK  ]

跳板机

#自动切换终端脚本,脚本不认识别名(ll),判断里面不能接 >/dev/null,不然会夯住
vim QH.sh
#脚本1
#!/bin/bash
cat <<EOF
+------------+
|1.连接web01 |
+------------+
|2.连接web02 |
+------------+
|3.连接nfs   |
+------------+
|4.连接backup|
+------------+
EOF
read -p '请输入想要连接的虚拟机的序号:' num

if    [ $num -eq 1 ];then
	ssh root@172.16.1.7
elif  [ $num -eq 2 ];then
	ssh root@172.16.1.8 
elif  [ $num -eq 3 ];then
 	ssh root@172.16.1.31 
elif  [ $num -eq 4 ];then
	ssh root@172.16.1.41 
fi

# if    [ $num -eq 1 -o $num == web01 ];then	不能这样写

#脚本2
#!/bin/bash
cat <<EOF
+------------+
|1.连接web01 |
+------------+
|2.连接web02 |
+------------+
|3.连接nfs   |
+------------+
|4.连接backup|
+------------+
EOF
read -n1 -p "请输入想要连接的虚拟机的序号: " answer
case $answer in
1)
      ssh root@172.16.1.7;;
2)
      ssh root@172.16.1.8;;
3)
      ssh root@172.16.1.31;;
4)
      ssh root@172.16.1.41;;
esac
exit 0

#脚本3
vim jumpserver.sh
#!/bin/bash
#jumpserver
lb01=172.16.1.5
lb02=172.16.1.6
web01=172.16.1.7
web02=172.16.1.8
web03=172.16.1.9
nfs=172.16.1.31
backup=172.16.1.41
db01=172.16.1.51
db02=172.16.1.52
db03=172.16.1.53
db04=172.16.1.54
m01=172.16.1.61
zabbix=172.16.1.71

cat <<EOF
        +-------------------------+
        |     1) lb01             |
        |     2) lb02             |
        |     3) web01            |
        |     4) web02            |
        |     5) web03            |
        |     6) nfs              |
        |     7) backup           |
        |     8) db01             |
        |     9) db02             |
        |     10) db03            |
        |     11) db04            |
        |     12) m01             |
        |     13) zabbix          |
        |     h) help             |
        +-------------------------+
EOF
read -p 'Please Input Number: ' num

if [ $num -eq 1 ];then
  ssh root@$lb01
elif [ $num -eq 2 ];then
  ssh root@$lb02
elif [ $num -eq 3 ];then
  ssh root@$web01
elif [ $num -eq 4 ];then
  ssh root@$web02
elif [ $num -eq 5 ];then
  ssh root@$web03
elif [ $num -eq 6 ];then
  ssh root@$nfs
elif [ $num -eq 7 ];then
  ssh root@$backup
elif [ $num -eq 8 ];then
  ssh root@$db01
elif [ $num -eq 9 ];then
  ssh root@$db02
elif [ $num -eq 10 ];then
  ssh root@$db03
elif [ $num -eq 11 ];then
  ssh root@$db04
elif [ $num -eq 12 ];then
  ssh root@$m01
elif [ $num -eq 13 ];then
  ssh root@$zabbix
fi
posted @ 2020-05-01 16:18  看萝卜在飘  阅读(270)  评论(0编辑  收藏  举报