[shell脚本]条件判断和循环

基本语法

1、条件判断

if [ condition1 ];then
    command 1
elif [ condition2 ];then
    command 2
else
    command3
fi

写成一行:if [ condition ]; then command; fi
注意:
(1)if .. fi标志着判断语句的开始和结束;
(2)[ ]是条件判断符,注意条件语句和判断符首末都需要空出一格;

2、循环
for循环

for var in item1 item2 item3;
do    
    command1
    command2
done

类C风格for循环

for((i=0;i<3;i++));
do
    command1
    command2
done

更详细的参考:
shell流程控制:http://www.runoob.com/linux/linux-shell-process-control.html
shell循环:https://www.jianshu.com/p/f973002a7ca2

实例

1、判断
(1)数值判断

#保证脚本传入参数个数正确再执行后面部分
if [ $# -lt 3 ];then
    echo "lack parameters!"
    exit 1
fi

(2)字符串判断

(3)文件检测

if [ -s ../work/file1 && -s ../work/file2 ];then
    python run.py
    if [ ${?} -eq 0 ];then
        exit 0
    else
        echo "error"
        exit 1
    fi
fi

2、循环
(1)数字循环

sum=0
for i in  {1..19}; do
    $sum = $sum + $i
    echo "sum=$sum"
done

(2)字符串循环

list = "Hello world! "
for i in $list;
do
    echo $i
done

(3)文件路径循环

for file in /home/doc/shell/*.sh
do
    echo $file
done

(4)用循环实现多条类似命令并行

FILE_LIST="file1 file2 file3 ";
for $file in $FILE_LIST;
do
{
    $HADOOP fs -cat $HADOOP_OUT/$file/* > localpath/$file.txt
}
done
wait

说明:haodoop fs -cat命令需要花费一定的时间,因此当需要cat多个路径下的文件时,可以通过for循环让它们并行节省时间,wait命令保证for循环中的命令都执行完后,再执行后续部分。

posted @ 2018-11-05 11:59  surimj  阅读(385)  评论(0编辑  收藏  举报