条件测试

1、条件测试test或[ ](测试条件是真是假)

例如:字符串比较

#!/bin/bash
read data
test "$data" == "hello" //注意等号两边有空格  或者 [ $data == "hello" ]
echo $? //上一条命令的运行结果,成功为0,失败为1


 shell脚本--语法篇_shel


例如:两数比较大小

#!/bin/bash
data=200
[ $data -eq 100 ]
echo $?
[ $data -lt 100 ]
echo $?
[ $data -le 100 ]
echo $?
[ $data -gt 100 ]
echo $?
[ $data -ge 100 ]
echo $?


 shell脚本--语法篇_语法篇_02


 shell脚本--语法篇_l脚本_03


 shell脚本--语法篇_l脚本_04

例如:测试与、非逻辑运算

 shell脚本--语法篇_语法篇_05

2、if/then/elif/else/fi

#!/bin/bash
read data
if [ "$data" -eq 100 ];then
    echo "100"
elif [ "$data" -eq 200 ];then
    echo "200"
else
    :  //  :为空命令,该命令不做任何事
fi

 shell脚本--语法篇_语法篇_06


#!/bin/bash
read data
[ "$data" -eq 100 ] && {   //成立执行花括号里面,否则执行括号外

    echo "yes"
    exit 0
}
echo "no"

 shell脚本--语法篇_l脚本_07


#!/bin/bash
read data
[ "$data" -eq 100 ] || {  //不成立执行花括号里面,否则执行括号外

    echo "yes"
    exit 0
}
echo "no"

 shell脚本--语法篇_shel_08


3、case/esac

#!/bin/bash
read val
case "$val" in
    start | -s | -start | -START )
        echo "start"
        ;;
    'stop' )
        echo "stop"
        ;;
    '*' )
        echo "*"
        ;;
esac

 shell脚本--语法篇_语法篇_09


循环语句

1、for/do/done

写法一:

#!/bin/bash

//for i in {1..100}

for i in {a..z}
do
   echo "$i"
done

运行结果: 打印a...z的字母


写法二:

#!/bin/bash
for(( i=0;i<=100;i++ ))
do
   echo "$i"
done

运行结果: 打印1...100的数字

2、while/do/done  && until/do/done

 shell脚本--语法篇_shel_10


 shell脚本--语法篇_l脚本_11


求1~100 间的偶数的和

#!/bin/bash
sum=0
ret=0
for i in {1..100}
do
    let ret=i%2
    if [ $ret -eq 0 ];then
        let sum+=i
    fi
done
echo $sum

运行结果:2550

3、shell脚本的调试方法

-n : 读一遍脚本中的命令但不执行,用于检查脚本中的语法错误 

-v : 将执行的每一条命令和如果打印出来

-x : 提供跟踪执行信息,将执行过程打印出来


这些选项的使用方法:

 (1) 在命令行提供参数: bash -x ./test.sh

 (2) 在脚本开头提供参数:#!/bin/bash -x

 (3) 在脚本中用set命令启用或禁用

       set-x 和 set+x分别表示启用执行过程和关闭执行过程

数组


bash不支持多维数组,只支持一维数组;只支持序列下标,不支持关联式下标


用shell编写进度条:

#!/bin/bash
i=0
str=''
arr=('|' '/' '-' '\\')
index=0
while [ $i -le 100 ]
do
    let index=i%4
    printf "[%-100s][%d%%][%c]\r" "$str" "$i" "${arr[$index]}"
    sleep 0.1
    let i++
    str+='#'
done
printf "\n"

 shell脚本--语法篇_l脚本_12