1 、运算符
1、基本语法
“$((运算式))”或‘“$[运算式]”
2、案例实操
2 、条件判断
1、基本语法
(1)test condition
(2)[ condition ] (注意condition前后要有空格)
注意:条件非空即为true,[zhm]返回true,[ ]返回false
2、常用判断条件
(1)两个整数之间比较
符号 | 含义 |
---|---|
-eq | 等于(equal) |
-ne | 不等于(not equal) |
-lt | 小于(less than) |
-le | 小于等于(less equal) |
-gt | 大于(greater than) |
-ge | 大于等于(greater equal) |
说明:如果是字符串之间的比较,用等号“=”判断相等;用“!=”判断不等。
(2)按照文件权限进行判断
符号 | 含义 |
---|---|
-r | 有读的权限(read) |
-w | 有写的权限(write) |
-x | 有执行的权限(execute) |
(3)
符号 | 权限 |
---|---|
-e | 文件存在(existence) |
-f | 文件存在并且时一个常规文件(file) |
-d | 文件存在并且是一个目录(directory) |
3、案例实操
(1)100是否大于99
(2)helloworld.sh是否有执行权限
(3)/root/scripts/a/a.txt 目录中的文件是否存在
(4)多条件判断(&&表示前一条命令执行成功时,才执行后一条命令,||表示上一条命令执行失败2后,才执行下一条命令)
3 、流程控制
3.1 if判断
1、基本语法
(1)单分支
if [ 条件判断式 ];then
程序
fi
或
if [ 条件判断式 ]
then
程序
fi
(2)多分支
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
else
程序
fi
注意:
(1)[ 条件判断式 ],中括号和条件判断式之间必须要有空格。
(2)if后面要有空格。
2、案例实操
输入一个年龄数字参数,判断这个年龄属于哪种人。
#!/bin/bash
if [ $# -ne 1 ]
then
echo '请输入一个数字参数'
exit
fi
if [ $1 -lt 18 ]
then
echo '未成年'
elif [ $1 -lt 40 ]
then
echo '青年人'
elif [ $1 -lt 60 ]
then
echo '中年人'
else
echo '老年人'
fi
3.2 case语句
1、基本语法
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
...省略其他分支...
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
注意:
(1)case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
(2)双分号“;;”表示命令序列结束,相当于java中的break。
(3)最后的“*)”表示默认模式,相当于java中的default。
2、案例实操
输入一个数字(1-3),输出对应的英文
#!/bin/bash
case $1 in
1)
echo "one"
;;
2)
echo "two"
;;
3)
echo "three"
;;
*)
echo "number else"
;;
esac
3.3 for循环
1、基本语法
for((初始值;循环控制条件;变量变化))
do
程序
done
2、案例实操
#!/bin/bash
sum=0
for ((i=0;i<=100;i++))
do
sum=$[$sum+$i]
done
echo $sum
3、基本语法2
for 变量 in 值1 值2 值3
do
程序
done
4、案例实操
(1)打印所有参数
#!/bin/bash
for i in monther father you
do
echo "$i都是家人"
done
(2)比较$*和$@的区别
(没有加"")
#!/bin/bash
echo '==========$*=========='
for i in $*
do
echo $i
done
echo '==========$@=========='
for i in $@
do
echo $i
done
(加了"")
#!/bin/bash
echo '==========$*=========='
for i in "$*"
do
echo $i
done
echo '==========$@=========='
for i in "$@"
do
echo $i
done
注意:
(1)$*和$@都表示传递给函数或脚本的所有参数,不被双引号"“包含时,都以$1,$2,$3…$n的形式输出所有参数。
(2)当它们被双引号”"包含时,$*会将所有的参数作为一个整体,以“$1,$2,$3…$n”形式输出;而$@会将各个参数分开,以“$1”,“$2”…“$n”的形式输出所有参数。
3.4 while循环
1、基本语法
while [ 条件判断式 ]
do
程序
done
2、案例实操
从1加到100
#!bin/bash
sum=0
i=1
while [ $i -le 100 ]
do
sum=$[$sum+$i]
i=$[$i+1]
done
echo $sum