BASH命令和SHELL脚本总结(9)其它篇

来源:互联网 发布:人工智能电影国语 编辑:程序博客网 时间:2024/06/05 09:00

@算术运算

a=11;leta=a+5; echo $a;#输出为16

a=11;a=a+5;echo $a; #输出为a+5

a=11;a=$((a+5));echo $a;#输出为16

 


@$(( )) 用来做算术计算

$ a=5; b=7;c=2

$ echo $((a+b*c ))

19

$ echo $(((a+b)/c ))

6

$ echo $(((a*b)%c))

1

 

@归并排序@

 [ -s${ONEDAY_ALL} ] && exit;
 filelist=`ls $OUTPUT_PATH/$DATE1/yyidword*`
 sort -m --temporary-directory=./ $filelist >$ONEDAY_ALL.imcomplete
 mv $ONEDAY_ALL.imcomplete $ONEDAY_ALL

 

 

@小技巧-知道现在在运行什么程序@

#a=`ps-aux|awk '$10=="sh" && $11=="sleep.sh"' |wc -l`

 

@rsync工具

total_try=1
is_success=0
while [ "$total_try" -lt "10" ]
do
    rsync --bwlimit=819210.1.1.1::root/data/$long_log_date/log_$hour_original* $INPUT_CD_LOG_DIR
     if [ $? == 0 ]; then
          is_success=1
          break
     fi
     total_try=$(($total_try+1))
     sleep 60
done

 

@SHELL比较时间先后@

[@administer_141_114script]$ echo `date -d "-2 day" "+%Y%m%d %A"`
20120830 Thursday
[@administer_141_114 script]$ echo `date -d "-2 day""+%Y%m%d"`
20120830
[@administer_141_114 script]$ echo `date -d "+1 day""+%Y%m%d"`
20120902
[@administer_141_114 script]$ echo `date -d "+0 day""+%Y%m%d"`
20120901

 

@利用date命令比较两个日期的大小@

先把日期转换成时间戳格式,再进行比较。

date 的+%s可以将日期转换成时间戳格式,看下面的例子:

#!/bin/bash 

date1="2008-4-0912:00:00"

date2="2008-4-1015:00:00" 

t1=`date -d"$date1" +%s`

t2=`date -d"$date2" +%s` 

if [ $t1 -gt$t2 ]; then

   echo "$date1 > $date2"

elif [ $t1-eq $t2 ]; then

   echo "$date1 == $date2"

else

   echo "$date1 < $date2"


@得到某一天的前一天@
当前日期的前一天date_yesterday=`date -d"1 day ago" +"%Y%m%d"`
任意日期的前一天date_yesterday_yesterday=`date -d"$date_yesterday 1 day ago" +"%Y%m%d"`

@输出当前小时数@

长格式 HOUR=`date +%H` 假设当前时间是AM 09:50,那么输出时间为HOUR = 09

短格式  HOUR=`date +%k`  假设当前时间是AM 09:50,那么输出时间为HOUR = 9


@date的格式@

date_ie=`date -d"$date" +"%Y-%m-%d"`

date_reg=`date -d"$date" +"%Y%m%d"`


@计算过去某天距离现在有多少天@

date=2005-09-01

num=1
while [ `date -d"$num day ago" +"%Y%m%d"` -ne "$date" ]
do
num=$(($num+1))
done

那么2005-09-01距离现在有num天



@语法@

命令1 && 命令2    如果这个命令1执行成功& &那么执行这个命2

mv myfilemyfile2 && echo "if you are seeing this then mv was success!"

命令1 || 命令2     如果| |左边的命令(命令1)未执行成功,那么就执行| |右边的命令(命令2)

  

@逻辑或

if ["$hour_original" -eq 9 ]||[ "$hour_original" -eq 18 ];then
    sh ./script/5_tidy_result.sh   
fi

 

原创粉丝点击