Shell_循环控制及状态返回值应用实践

break || continue || exit || return

break n :如果省略n,则表示跳出整个循环,n表示跳出循环层数
continue n:如果省略n,则表示跳出本次循环,n表示退到第n层继续循环
exit n:退出当前shell程序,n为上一次执行状态返回值
return n:作为函数返回值

实战:
    1.通过break命令跳出整个循环,执行循环其他程序
#!/bin/bash
if [ $# -ne 1 ];then #《==如果传参不为1,则打印提示
    echo $"usage:$0 {break|continue|exit|return}"
    exit 1
fi

test()
{
    for((i=0 ; i<5 ; i++))
    do
        if [ $i -eq 3 ];then
            $*; #<==接收函数外的参数,将来就是{break|continue|exit|return} 其中一个
        fi
        echo $i
    done
    echo "i am in func" #<==循环外的输出提示
}
test $*  #<==函数传参
func_ret=$? #<==接收并测试函数返回值
if [ `echo $*|grep return|wc -l` -eq 1 ];then    #<==如果传参有return
    echo  "return exit status:$func_ret" #<==则提示return 退出状态
    
fi
echo "ok" #<==函数外的输出提示

=========================================================


1.批量生产随机字符文件名
#!/bin/bash
path=/opt
[ -d "$path" ] || mkdir -p $path
for n in `seq 10`
do
    random=$(openssl rand -base64 40|sed 's#[^a-z]##g' |cut -c 2-11)
    
    touch $path/${random}.txt
done

==================================================
2.根据用户输入判断
#!/bin/bash
read -p "please input a number " ans
case "$ans" in
    1)
        echo "the num you input is 1"
        ;;
    2)
        echo "the num you input is 2"
        ;;
    [3-9])
        echo "the num you input is $ans"
        ;;
    *)
        echo "please input [0-9] int"
        exit;
esac

=========================================================


end 
 

你可能感兴趣的:(Shell)