shell封装

shift

命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本)

shift(shift 1) 命令每执行一次,变量的个数($#)减一,移动2位可以 执行2次shift

Shell脚本$变量的含义

1、$#:表示执行脚本传入参数的个数

2、$*:表示执行脚本传入参数的列表(不包括$0)

3、$$:表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)

4、$!:Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)

5、$@:表示执行脚本传入参数的所有个数(不包括$0)

6、$0:表示执行的脚本名称

7、$1:表示第一个参数

8、$2:表示第二个参数

9、$?:表示脚本执行的状态,0表示正常,其他表示错误

(())双小括号

双小括号 (( )) 是 Bash Shell 中专门用来进行整数运算的命令,不能对小数(浮点数)或者字符串进行运算。

[[]]和[]

尽量使用[[ … ]]条件判断结构, 而不是[ ], 能够防止脚本中的许多逻辑错误. 比如,&&, ||, <, 和> 操作符能够正常存在于[[]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错。

[]

[ ] 两个符号左右都要有空格分隔
内部操作符与操作变量之间要有空格:如 [ “a” = “b” ]
字符串比较中,> < 需要写成\> \< 进行转义:如 [ “a” < “b” ]
\字符串变量尽量使用"" 双引号扩住,避免值未定义引用而出错
[ ] 中可以使用 –a –o 进行逻辑运算
[ ] 是bash 内置命令

[[]]

[[ ]] 两个符号左右都要有空格分隔
内部操作符与操作变量之间要有空格:如 [[ “a” = “b” ]]
字符串比较中,可以直接使用 > < 无需转义。如 [[ “a” < “b” ]]
[[ ]] 中字符串如未使用"" ,可以通过==和=~进行模式和正则表达式匹配
[[] ] 内部可以使用 && || 进行逻辑运算
[[ ]] 是关键字
[[ ]] 其他用法都和[ ] 一样
[[ ]] 和 [ ] 都可以和 ! 配合使用

case $1 in

;;

命令“;;”指出程序流应该跳到整个case语句的末尾,类似break。


case 需要满足的值 in          #这里设置一个需要满足的条件
    判断条件1)                #判断条件1,判断该条件是否符合需要满足的值
        子模块                #如果判断条件为 true,执行子模块1
        ;;                   #结束整个循环
    判断条件2)               #如果判断条件1没满足需要满足的值,则走到判断条件2,判断该条件是否符合需要满足的值
        子模块2              #如果判断条件为 true,执行子模块2
        ;;                   #结束整个循环
    判断条件3)               #如果判断条件2没满足需要满足的值,则走到判断条件3,判断该条件是否符合需要满足的值
        子模块3                #如果判断条件为 true,执行子模块3
        ;;                   #结束整个循环
    ……
    *)                      #如果之前的判断条件都没满足需要满足的值,则走到判断条件*
        子模块4              #走到判断条件*后,不管有没有满足都会执行下面的子模块
        ;;                   #结束整个循环

esac                       #结束语法

封装 sh run.sh arg1 arg2

function usage(){
    echo "Usage: ./run.sh -c /home/work/conf.conf -start /home/work/start.sh"

    echo "Usage: ./run.sh -c /home/work/conf.conf -stop /home/work/start.sh"
}

function help(){

}

if [$# -eq 0]; then
    usage
    exit 1
if

while [$# -gt 0];
do 
    case $1 in 
        -start)
            shift
            START_PATH=$1
            shift
            ;;
        -stop)
            shift
            STOP_PATH=$1
            shift
            ;;
        -c)
            shift
            COUNT_TIME=$1
            if [[ $1 -lt 0]]; then
                echo "-c must bigger than 0."
                exit 1
            fi
            shift
            ;;
        -h)
            usage
            exit 1
            ;;
       esac
done
         
function check_dir(){
    if [[! -d "log/" ]];then
        mkdir log
    else
        echo "log dir already exist."
    fi
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kingairy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值