运算符语法
$((运算式))
$[运算式] 推荐使用
expr m + n expression表达式
expr表达式注意算法符之间要有空格如果希望将expr的结果赋值给变量使用``
expr *,,% (乘,除,取余)
计算(2+3)x4
计算两个数之和
vi opr.sh
#!/bin/bash
#计算(2+3)x4
#$((运算式))
res1=$(((2+3)*4))
echo "res1结果=$res1"
#$[运算式] `推荐使用`
res2=$[(2+3)*4]
echo "res2 结果=$res2"
#expression表达式
res3=` expr 2 + 3`
echo "res3 结果=$res3"
res4=` expr $res3 \* 4`
echo "res4 结果=$res4"
#计算两个数之和
res5=$[$1+$2]
echo "res5 结果=$res5"
条件判断基本语法
[ condition ]注意condition前后要有空格
非空返回true,可使用$?验证(0:true >1:false)
条件判断
= 字符串判断 或者 两个正数比较
-lt 小于 -le 小于等于 -eq 等于 -gt 大于 -ge 大于等于 -ne 不等于
-r 读权限 -w 写权限 -x 执行权限
-f 文件存在并是一个常规的文件
-e 文件存在
-d 是一个目录
[ 有内容 ] 返回true
[ ] 返回false
流程控制
基本语法
if [ 条件判断式 ];
then
代码
fi
多分支
if [ 条件判断式 ];
then
代码
elif [ 条件判断式 ] && [ 条件判断式 ];
then
代码
else
代码
fi
vi condition.sh
#!/bin/bash
#输入的第一个参数和第二个参数是否相同
if [ $1 = $2 ];then
echo "$1 equal $2"
else
echo "$1 not equal $2"
fi
#输入的第三个参数比较大小
if [ $3 -ge 10 ];then
echo "$3 大于等于10"
elif [ $3 -gt 5 ] && [ $3 -lt 10 ];then
echo "$3 大于5且小于10"
elif [ $3 -le 5 ];then
echo "$3小于等于5"
else
echo "$3小于5"
fi
FILE_PATH="/root/test_shell_code/var.sh"
if [ -f $FILE_PATH ];
then
echo "$FILE_PATH 文件存在"
else
echo "$FILE_PATH 文件不存在"
fi
if [ -x $FILE_PATH ];
then
echo "有$FILE_PATH的执行权限"
else
echo "没有$FILE_PATH的执行权限"
fi
FILE_PATH="/root/test_shell_code1"
if [ -d $FILE_PATH ];
then
echo "$FILE_PATH 目录存在"
else
echo "$FILE_PATH 目录不存在"
fi
if [ felicia ];then
echo "hi felicia"
fi
if [ ];then
echo "为假"
fi
case语句
级别语法
case $变量名 in “1”)
代码
;;
“2”)
代码
;;
“3”)
代码
;;
*)
代码
;;
esac
vi test_case.sh
#!/bin/bash
case $1 in "1")
echo "星期一"
;;
"2")
echo "星期二"
;;
"3")
echo "星期三"
;;
"4")
echo "星期四"
;;
"5")
echo "星期五"
;;
"6")
echo "星期六"
;;
"7")
echo "星期天"
;;
*)
echo "未知"
;;
esac
for循环
基本语法
for 变量 in 值1,值2,值3
do
代码
done
for ((初始值;循环控制条件;变量变化))
do
代码
done
打印输入的参数 可以看出∗和*和∗和@的区别
vi test_for.sh
#!/bin/bash
for i in "$*"
do
echo "num is $i"
done
for i in "$@"
do
echo "num is $i"
done
vi test_for2.sh
#!/bin/bash
#从1加到N的值输出显示
SUM=0
for((i=1;i<=$1;i++))
do
SUM=$[$SUM+$i]
done
echo "总和=$SUM"
while 循环
基本语法
while [ 条件判断 ]
do
代码
done
实例:输入一个数,统计从1+…+n的值是多少
vi test_while.sh
#!/bin/bash
SUM=0
i=0
while [ $i -le $1 ]
do
SUM=$[$SUM+$i]
i=$[$i+1]
done
echo "总和=$SUM"