shell常用代码积累

1、使用getopts从命令行接收参数

   例:

    while getopts h:u:p: OPTION

    do

      case $OPTION in 

       h) echo "主机地址:$OPTARG";;

   u) echo "用户名:$OPTARG";;

   p) echo "密码:$OPTARG";;

       ?) echo "无效的选项";;

      esac 

   done  

getopts的选项后可以有冒号也可以没有,有冒号的选项表示在输入时选项后有值,值存在变量$OPTARG中,没有冒号表示不跟值。

 

2、获取某段时间内的月份列表

   startdate=$1

   enddate=$2

   datecode=$startdate

   i=0

   until [ "$datecode" -ge "$enddate" ]

   do

        datecode=$(date -d "$startdate01 $i month" +%Y%m)

        i=$((i+1))

        echo $datecode

   Done

执行时通过命令行输入起始时间和结束时间,即可输出这段时间内的月份列表。若想罗列出每一天,则只需将month改成day,将%Y%m该成%Y%m%d

 

3、获取字符串长度

   myvar="jsldjfoupsdfplsjdlf"

   echo ${#myvar}

   只需要在变量名前面加上#即可。

 

4、三种获取本地ip的方法

第一种方法:ifconfig|grep inet |awk '{print $2}'|sed '2d'|awk -F : '{print $2}'

第二种方法:ifconfig|grep inet|sed -n '1p' |awk '{print $2}'|awk -F : '{print $2}'

第三种方法:ifconfig|grep "inet addr"|grep -v "127.0.0"|awk -F":" '{print $2}'|awk '{print $1}'|head -1

 

5、字符串转换成时间戳

   date -d "${startTimeIndex} 00:00:00" +%s,若变量为8位数字字符则转换成功,否则转换失败,通常用此来判断输入的时间变量格式是否正确。

 

6、按行读取文件

While read Line;do

      对行数据的一些操作

done< ${filename}

 

7、判断数据库是否连接成功

   只需要连接数据库然后执行一条数据库操作命令,看能否执行成功即可。

mysql -h -u -P -p  -e "select 100"

rtnCode=$? 

$?表示命令的执行结果,0表示没有错误,其他任何值表示有错误,所以这里只需要判断rtnCode是否等于0 

原文地址:https://www.cnblogs.com/Cherie/p/3309189.html