Shell中的运算符
# 采用括号的方式(更容易理解)
(1) “$((运算式))”或“$[运算式]”
# 关键字操作
(2) expr + , - , \*, /, % 加,减,乘,除,取余
PS:expr运算符间要有空格
案例实操
# 1. 计算 1+3
A=`expr 1 + 3`
echo 'A的值为:$A:1+3='"$A"
# 2.计算 98-60
B=`expr 98 - 60`
echo 'B的值为:$B:98-60='"$B"
# 3.计算(2+3)*4
C=$[(2+3)*4]
echo 'C的值为: $C: (2+3)*4='"$C"
D=$(((2+3)*4))
echo 'D的值为: $D: (2+3)*4='"$D"
# 执行的结果
[root@aims02 cdrom]# sh calcu.sh
# A的值为:$A:1+3=4
# B的值为:$B:98-60=38
# C的值为: $C: (2+3)*4=20
# D的值为: $D: (2+3)*4=20
Shell中的条件判断
# [ condition ](注意condition前后要有空格)
# 注意:条件非空即为true,[ milla]返回true,[] 返回false。
常用判断
(1)两个整数之间比较
= 字符串比较
-lt 小于(less than) -le 小于等于(less equal)
-eq 等于(equal) -gt 大于(greater than)
-ge 大于等于(greater equal) -ne 不等于(Not equal)
(2)按照文件权限进行判断
-r 有读的权限(read) -w 有写的权限(write)
-x 有执行的权限(execute)
(3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件(file)
-e 文件存在(existence) -d 文件存在并是一个目录(directory)
(4)多条件判断
&& :表示前一条命令执行成功时,才执行后一条命令
|| :表示上一条命令指定失败时,才执行后一条命令
案例实操
if [ 1 -eq 2 ];then
echo "第1种:if then 1=2不成立"
fi
if [ 1 -eq 2 ]
then
echo "第2种:if then 1=2不成立"
elif [ 3 -gt 5 ]
then
echo "elseif 3>5 不成立"
else
echo "else 其他情况"
### 最后结尾
fi
# 创建test文件夹之后输出文件列表(创建成功了)
[root@aims02 cdrom]# mkdir test && ll
总用量 8
-rw-r--r-- 1 root root 261 10月 20 16:20 calcu.sh
drwxr-xr-x 2 root root 6 10月 20 17:16 test
-rw-r--r-- 1 root root 234 10月 20 17:14 test.sh
# 创建文件夹失败后输出文件列表(文件已经存在)
[root@aims02 cdrom]# mkdir test || ll
mkdir: 无法创建目录"test": 文件已存在
总用量 8
-rw-r--r-- 1 root root 261 10月 20 16:20 calcu.sh
drwxr-xr-x 2 root root 6 10月 20 17:16 test
-rw-r--r-- 1 root root 234 10月 20 17:14 test.sh
Shell流程控制
if 语句
基本语法
注意事项:
(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格
(2)if后要有空格
if [ 条件判断式 ];then
程序
fi
或者
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
else
程序
fi
case语句
基本语法
注意事项:
- case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
- 双分号“;;”表示命令序列结束,相当于java中的break。
- 最后的“*)”表示默认模式,相当于java中的default。
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
for循环
基本语法
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
while循环
基本语法
while [ 条件判断式 ]
do
程序
done
案例实操
#!/bin/bash
if [ 1 -eq 2 ];then
echo "第1种:if then 1=2不成立"
fi
echo "1、if语句"
if [ 1 -eq 2 ]
then
echo "第2种:if then 1=2不成立"
elif [ 3 -gt 5 ]
then
echo "elseif 3>5 不成立"
else
echo "else 其他情况"
### 最后结尾
fi
echo ""
echo "2、case语句 "
echo "共计有$#个参数"
case $# in
"1")
echo "只有一个参数"
;;
"2")
echo "有两个参数"
;;
"3")
echo "有三个参数"
;;
*)
echo "其他参数"
;;
esac
echo ""
echo "3、for循环"
for((i=0;i<=$#;i++))
do
echo "第$i个参数"
done
echo "for循环打印所有参数"
for i in $*
do
echo "参数分别为是$i"
done
echo ""
echo "4、while循环"
i=0
while [ $i -le 100 ]
do
i=$[$i+1]
done
echo "最终的数据结果:$i"
# 执行结果
[root@aims02 cdrom]# sh test.sh 13 23 46
1、if语句
else 其他情况
2、case语句
共计有3个参数
有三个参数
3.1、for循环
第0个参数
第1个参数
第2个参数
第3个参数
3.2、for循环打印所有参数
参数分别为是13
参数分别为是23
参数分别为是46
4、while循环
最终的数据结果:101
未完待续...