• Shell Function


    commons-utils-1.0.0.shfn

      1 #!/bin/sh
      2 
      3 echo_n(){
      4     echo -e "33[30;32m$*33[0m"
      5 }
      6 
      7 echo_e(){
      8     echo -e "33[30;35m$*33[0m"
      9 }
     10 
     11 trim(){
     12     echo $1
     13 }
     14 
     15 is_contains(){
     16     local ps=
     17     for ps in $2; do
     18         if [ "$ps" = "$1" ]; then
     19             echo true
     20             return 1
     21         fi
     22     done
     23     echo false
     24 }
     25 
     26 chk_positive_integer(){
     27     POS_INT=
     28     local nstr=`trim "$1"`
     29     echo "$nstr" | grep "[^0-9]" >/dev/null 2>&1
     30     if [ $? -eq 1 ]&&[ ! -z "$nstr" ]; then
     31         local t=$(expr $nstr + 0)
     32         if (( $t > 0 )); then
     33             POS_INT=$t
     34             return 1
     35         fi
     36     fi
     37 }
     38 
     39 to_positive_integer(){
     40     chk_positive_integer "$1"
     41     echo $POS_INT
     42 }
     43 
     44 one_slash(){
     45     local str="$1"
     46     while [[ "$src" == *//* ]]; do
     47         local regex="//" repl="/"
     48         str="${str//$regex/$repl}"
     49     done
     50     echo $str
     51 }
     52 
     53 to_canonical_path(){
     54     local path=`trim "$1"`
     55     if [ ! -z "$path" ]&&[ -e "$path" ]; then
     56         local result=
     57         if [ -d "$path" ]; then
     58             result=`cd "$path"; pwd`
     59         elif [ -f "$path" ]; then
     60             local directory=`dirname "$path"`
     61             directory=`cd "$directory"; pwd`
     62             local filename=`basename "$path"`
     63             result="$directory/$filename"
     64         fi
     65         result=`one_slash "$result"`
     66         echo $result
     67     fi
     68 }
     69 
     70 display_time_its(){
     71     local internal_time_stamp="$1" format="$2" utc="$3"
     72     if [ ! -z "$internal_time_stamp" ]; then
     73         if [ "$format" = "" ]; then
     74             format="+%Y%m%d_%H%M%S_%N"
     75         elif [ "$format" = "datetime" ]; then
     76             format="+%Y%m%d%H%M%S"
     77         elif [ "$format" = "clock" ]; then
     78             format="+%F %T"
     79         elif [ "$format" = "date" ]; then
     80             format="+%Y%m%d"
     81         elif [ "$format" = "date-" ]; then
     82             format="+%F"
     83         elif [ "$format" = "time" ]; then
     84             format="+%H%M%S"
     85         elif [ "$format" = "time:" ]; then
     86             format="+%T"
     87         elif [ "$format" = "time:.ns" ]; then
     88             format="+%T.%N"
     89         elif [ "$format" = "clock.ns" ]; then
     90             format="+%F %T.%N"
     91         elif [ "$format" = "table" ]; then
     92             format="+%F%t%T%t%N"
     93         fi
     94         if [ -z "$utc" ]; then
     95             date -d @$internal_time_stamp "$format"
     96         else
     97             date -u -d @$internal_time_stamp "$format"
     98         fi
     99     fi
    100 }
    101 
    102 stopwatch(){
    103     local cmd="$1" msg="$2"
    104     if [ "$cmd" = "start" ]; then
    105         if [ "$sw_state" = "" ]; then
    106             unset sw_state sw_ref_arr sw_lap_begin sw_lap_end sw_lap_arr sw_pause_begin sw_pause_end sw_pause_arr sw_msg_idx sw_lap_msg_arr sw_pause_msg_idx sw_pause_msg_arr
    107             sw_lap_begin="`date +%s.%N`"
    108             sw_state="R"
    109             sw_lap_msg_idx=0
    110             sw_pause_msg_idx=0
    111             sw_pause_msg_arr[$sw_pause_msg_idx]="$msg"
    112         elif [ "$sw_state" = "H" ]; then
    113             sw_pause_end="`date +%s.%N`"
    114             sw_pause_arr[${#sw_pause_arr[*]}]="$sw_pause_begin-$sw_pause_end"
    115             sw_pause_msg_arr[$sw_pause_msg_idx]="$msg"
    116             sw_state="R"
    117         else
    118             echo_e "(Start) requires the state to be ''/'H'."
    119         fi
    120     elif [ "$cmd" = "lap" ]; then
    121         if [ "$sw_state" = "R" ]; then
    122             sw_lap_end="`date +%s.%N`"
    123             sw_lap_arr[${#sw_lap_arr[*]}]="$sw_lap_begin $sw_lap_end"
    124             sw_lap_begin="$sw_lap_end"
    125             sw_ref_arr[$(expr ${#sw_lap_arr[*]} - 1)]=${sw_pause_arr[*]}
    126             sw_pause_arr=()
    127             sw_lap_msg_arr[$sw_lap_msg_idx]="$msg"
    128             let "sw_lap_msg_idx+=1"
    129         else
    130             echo_e "(Lap) requires the state to be 'R'."
    131         fi
    132     elif [ "$cmd" = "stop" ]; then
    133         if [ "$sw_state" = "R" ]; then
    134             sw_pause_begin="`date +%s.%N`"
    135             sw_pause_msg_arr[$sw_pause_msg_idx]="'${sw_pause_msg_arr[$sw_pause_msg_idx]}' -> '$msg'"
    136             let "sw_pause_msg_idx+=1"
    137             sw_state="H"
    138         else
    139             echo_e "(Stop) requires the state to be 'R'."
    140         fi
    141     elif [ "$cmd" = "reset" ]; then
    142         if [ "$sw_state" = "H" ]; then
    143             stopwatch start "* Last start"
    144             stopwatch lap "* Last lap"
    145             stopwatch stop "* Last stop"
    146             sw_state=
    147         else
    148             echo_e "(Reset) requires the state to be 'H'."
    149         fi
    150     else
    151         if [ ! "$sw_state" = "" ]; then
    152             echo_e "(*) requires the state to be ''."
    153         elif [ ${#sw_lap_arr[*]} != 0 ]; then
    154             printf "%4s %18s %18s %15s %18s %s
    " "Lap" "Begin" "End" "Duration" "Duration (HRF)" "Message"
    155             local i= summary_exp=0 pause_msg_idx=0 lap_msg_idx=0
    156             for((i=0;i<${#sw_lap_arr[*]};i++)); do
    157                 local lap_item=(${sw_lap_arr[$i]})
    158                 local lap_dur_exp="${lap_item[1]} - ${lap_item[0]}"
    159                 local total_duration="`echo "$lap_dur_exp" | bc | awk '{ printf "%.9f
    ", $1 }'`"
    160                 local pause_arr=(${sw_ref_arr[$i]})
    161                 local pause_dur_arr=()
    162                 local j=
    163                 for((j=0;j<${#pause_arr[*]};j++)); do
    164                     local pause_item="${pause_arr[$j]}"
    165                     pause_item=(${pause_item//-/ })
    166                     pause_dur_arr[j]="`echo "${pause_item[1]} - ${pause_item[0]}" | bc | awk '{ printf "%.9f
    ", $1 }'`"
    167                     lap_dur_exp="$lap_dur_exp - ${pause_dur_arr[j]}"
    168                 done
    169                 local real_duration="`echo "$lap_dur_exp" | bc | awk '{ printf "%.9f
    ", $1 }'`"
    170                 printf "%4s %18s %18s %15s %18s %s
    " "$(expr $i + 1)" 
    171                 "`display_time_its ${lap_item[0]} time:.ns`" 
    172                 "`display_time_its ${lap_item[1]} time:.ns`" 
    173                 "$real_duration" 
    174                 "`display_time_its $real_duration time:.ns *`" 
    175                 "${sw_lap_msg_arr[$lap_msg_idx]}"
    176                 let "lap_msg_idx+=1"
    177                 for((j=0;j<${#pause_arr[*]};j++)); do
    178                     local pause_item="${pause_arr[$j]}"
    179                     pause_item=(${pause_item//-/ })
    180                     printf "%4s %18s %18s %15s %18s %s
    " "\" 
    181                     "`display_time_its ${pause_item[0]} time:.ns`" 
    182                     "`display_time_its ${pause_item[1]} time:.ns`" 
    183                     "${pause_dur_arr[j]}" 
    184                     "`display_time_its ${pause_dur_arr[j]} time:.ns *`" 
    185                     "${sw_pause_msg_arr[$pause_msg_idx]}"
    186                     let "pause_msg_idx+=1"
    187                 done
    188                 if [ $j != 0 ]; then
    189                     printf "%42s %15s %18s
    " "Total:" "$total_duration" "`display_time_its $total_duration time:.ns *`"
    190                     summary_exp="$summary_exp + $total_duration"
    191                 else
    192                     summary_exp="$summary_exp + $real_duration"
    193                 fi
    194             done
    195             local m=0
    196             while((m < 77)); do
    197                 printf "%s" "-"
    198                 let "m+=1"
    199             done
    200             printf "
    "
    201             local summary_val="`echo "$summary_exp" | bc | awk '{ printf "%.9f
    ", $1 }'`"
    202             printf "%42s %15s %18s
    " "Summary:" "$summary_val" "`display_time_its $summary_val time:.ns *`"
    203         else
    204             echo_e No data.
    205         fi
    206     fi
    207 }
    208 
    209 chk_widest(){
    210     local i= max=0 arr=($1)
    211     for((i=0;i<${#arr[*]};i++)); do
    212         if [ ${#arr[$i]} -gt $max ]; then
    213             max=${#arr[$i]}
    214         fi
    215     done
    216     WIDEST=$max
    217 }
    218 
    219 load_config(){
    220     local cfg=`to_canonical_path "$0"`
    221     cfg="$cfg.ini"
    222     if [ ! -f "$cfg" ]; then
    223         echo_e "No such file. '$cfg'"
    224         exit
    225     else
    226         local line=
    227         while read line; do
    228             eval "$line"
    229         done < "$cfg"
    230     fi
    231 }
    232 
    233 :<<EOF
    234 TODO: 
    235 is_positive_number()
    236 is_positive_integer()
    237 is_negative_integer()
    238 is_negative_number()
    239 is_numeric()
    240 is_integer()
    241 # greater than 0
    242 is_gt0()
    243 to_numeric()
    244 to_integer()
    245 getopt/getopts
    246 EOF

    附件1

  • 相关阅读:
    android 调试卡在:Waiting for Debugger
    将DataTable 数据插入 SQL SERVER 数据库
    android adb shell 命令大全
    GeoServer地图开发解决方案(四):发布Web地图服务(WMS)篇
    GeoServer地图开发解决方案(三):部署地图数据篇
    GeoServer地图开发解决方案(二):地图数据处理篇
    GeoServer地图开发解决方案(一):环境搭建篇
    pl/sql developer 导入sql脚本
    Myeclipse2013破解方法
    CentOS 6.4下架设NFS服务器
  • 原文地址:https://www.cnblogs.com/rms365/p/11417137.html
Copyright © 2020-2023  润新知