Shell 运算符与流程控制

1.运算符

 $((a+b)) :

Shell 运算符与流程控制_第1张图片

$[a+b] : 建议使用

Shell 运算符与流程控制_第2张图片

expr a + b :

expr 的 乘以* 需要转义 为\*

运算符之间需要有空格,整体使用``(反引号)包起来 

Shell 运算符与流程控制_第3张图片

2.1 if判断与常用判断条件

[ 判断式 ] : 注意判断式俩端需要有空格

if 判断 :

if [ 条件判断式 ] 
then
    程序

elif [ 条件判断式 ]   #对比java中的else if 
then
    程序
else
    程序
fi    #以反if结尾

=:字符串比较

Shell 运算符与流程控制_第4张图片

对于俩个整数:

-lt  : 小于

-le : 小于等于

-eq : 等于

-gt : 大于

-ge : 大于等于

-ne : 不等于

#!/bin/bash

if [ $1 -lt $2 ]
then
        echo "$1小于$2"
fi

if [ $1 -le $2 ]
then
        echo "$1小于等于$2"
fi


if [ $1 -eq $2 ]
then
        echo "$1等于$2"
fi


if [ $1 -gt $2 ]
then
        echo "$1大于$2"
fi

if [ $1 -ge $2 ]
then
        echo "$1大于等于$2"
fi

if [ $1 -ne $2 ]
then
        echo "$1不等于$2"
fi

 Shell 运算符与流程控制_第5张图片

按照文件权限进行判断

-r 有读的权限

-w 有写的权限

-x 有执行的权限

#!/bin/bash

if [ -r /home/acofkings/shell/hello2.sh  ]
then
        echo "拥有读的权限"
fi


if [ -w /home/acofkings/shell/hello2.sh  ]
then 
        echo "拥有写的权限"
fi


if [ -x /home/acofkings/shell/hello2.sh  ]
then 
        echo "拥有执行的权限"
fi

 Shell 运算符与流程控制_第6张图片

按照文件类型进行判断

-f 文件存在并且是一个常规的文件

-e 文件存在

-d 文件存在并是一个目录

#!/bin/bash

if [ -f $1  ]
then
        echo "文件存在且是常规文件"
fi


if [ -e $1  ]
then
        echo "文件存在"
fi


if [ -d $1  ]
then
        echo "文件存在且是一个目录"
fi

3.case判断

case $变量名 in
"值1")
    如果变量的值等于值 1,则执行程序 1
;;
"值 2")
    如果变量的值等于值 2,则执行程序 2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac

例:

#!/bin/bash
case $1 in
"1")
        echo "1"
;;
"2")
        echo "2"
;;
*)
        echo "other"
;;
esac

4.for循环

俩个格式

格式一:

for 变 量 in 值 1 值 2 值 3…
do
    程序
done

例:

#!/bin/bash

for i in "$*"
do
        echo "$i"
done

for j in "$@"
do
        echo "$j" 
done

Shell 运算符与流程控制_第7张图片

$* 中参数作为一个整体输出

$@中参数一个个输出

格式二:

for (( 初始值;循环控制条件;变量变化 ))
do
    程序
done

例:

#!/bin/bash

SUM=0
for ((i=0;i<=100;i++))
do
        SUM=$[$SUM+$i]
done
echo "SUM=$SUM"

5.while循环

while [ 条件判断式 ]
do
程序
done
#!/bin/bash

#从命令行输入一个数 n,统计从 1+..+ n  的值是多少?

SUM=0
i=0
while [ $i -le $1 ]
do
        SUM=$[$SUM+$i]
        i=$[$i+1]
done
echo "SUM=$SUM"

 

 

 

你可能感兴趣的:(Linux,Shell)