if判断
如何判断一个文件是不是目录
if [ -d /tmp/ ];then
echo ok.
eles
echo failed.
fi
解释
if做开头
fi结尾
格式:
if (表达式)
语句1
else
语句2
fi
如果 /tmp/是目录就返回为ok如果/tmp/不是目录就返回为failed
-d
查看一个文件是不是目录,用-d 如 ls -d /tmp/
then
然后
elws
否则
(1) SHELL编程常见系统变量
$0
当前脚本的名称
$n
当前脚本的第n个参数,n=1,2,....9;
$*
当前脚本的所以参数(不包括程序本身);
$#
当前脚本的参数个数(不包括程序本身);
$?
命令或程序执行完后的状态,返回0表示执行成功;
$$
程序本身的PID号
(2) SHELL编程常见环境变量
PATH
命令所示路径,以冒号为分割
HOME
打印用户家目录
SHELL
显示当前shell类型
USER
打印当前用户名;
ID
打印当前用户ID信息
PWD
显示当前所在的路径
TERM
打印当前所在路径
TERM
打印当前终端类型
HOSTNAME
显示当前主机名
(3) SHELL编程用户变量:
A=www.9527edu.org
自定义变量A;
NG_SOFT=nginx-1.16.0
自定义变量NG_SOET
BACK_DIR=/data/backup
自定义BACK_DIR
IP=192.168.1.11
自定义IP1变量
IP2=192.168.1.12
自定义变量IP2
If条件语句实战
-f
判断文件是否存在eg:if[-f filename];
-d
判断目录是否存在eg:if[ -d dir ]
-eq
等于,应用于整型比较equal;
-ne
不等于,应用于型形比较not equal;
-lt
小于,应用于整行比较letter;
-gt
大于,应用于整型比较greater;
-le
小于或等于,应用于整型比较;
-ge
大于或等于,应用于整型比较;
-a
双方都成立(and)逻辑表达式 -a 逻辑表达式;
-o
单方成立(or)逻辑表达式 -o 逻辑表达式
-z
空字符串
||
单方成立;
&&
双方都成立表达式
!
取反就是反义词
[ ]
bash内部命令,[]与test是同等的,正则字符范围,引用数组元素编号,不支持+-*/数字运算符,逻辑测试使用-a -o
[[]]
bash程序语言的关键字,不是一个命令,[[]]结构比[]结构更加通用,不支持+-*/数字运算符,逻辑测试勇士&&,||.
{}
主要用于命令集合或者范围,例如mkdir -p /da他/201{}7,8]/
()
用于多个命令组,命令替换,初始化数组
(())
整数扩展,运算符重定义变量值,算数运算比较;
实例
#!/bin/bash
if [ -d $1 ];then
echo ok.
else
echo failed.
fi
$1为系统变量,在脚本后面跟上相应的文件或者目录或参数
如果参数为空0就是后面没有参数直接退出
if [ $# -eq 0 ];then
echo "------------"
echo "Usage:{执行此命令需要加nginx版本如1.12.2或1.16.0后面加上你的网站的域名如www.9527edu.org具体格>式sh nginx.sh 1.16.1 www.9527edu.org}"
exit
fi
如果有/usr/local/nginx/这个文件目录则退出不执行
#!/bin/bash
if [ ! -d /use/local/nginx/ ];then
参数
安装过程等
else
echo "install nginx is ok"
fi
判断100是不是大于50如果大于50返回为qwe,如果不大于返回为123
#!/bin/bash
if ((100>50));then
echo qwe
else
echo 123
fi
和上面一样,只是$1和$2是相应的数值
比如
$1=100 $2=50
100是不是大于50如果100大于50返回未qwe,如果不大于100返回未123
(())算数比较
#!/bin/bash
if (($1>$2));then
echo qwe
else
echo 123
fi
执行命令格式
sh s.sh 100 50