您的位置:首页 > 运维架构 > Shell

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

2012-09-29 16:39 363 查看
@算术运算
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: