Linux入门(十七)shell运算符&条件判断&流程控制&for循环&while循环

运算符语法
$((运算式))
$[运算式] 推荐使用
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"


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值