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
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
相关文章推荐
- BASH命令和SHELL脚本总结(5)赋值篇
- BASH命令和SHELL脚本总结(6)括号篇
- BASH命令和SHELL脚本总结(12)如何对字段进行操作
- BASH命令和SHELL脚本总结(7)判断篇
- BASH命令和SHELL脚本总结(11)比较两个文件创建时间的先后
- BASH命令和SHELL脚本总结(8)循环篇
- BASH命令和SHELL脚本总结(14)cat和grep和sort
- BASH命令和SHELL脚本总结(19)递归地拷贝目录结构
- BASH命令和SHELL脚本总结(16)父脚本中export的变量在子脚本中的可见性测试
- BASH命令和SHELL脚本总结(10)脚本互相调用篇
- BASH命令和SHELL脚本总结(15)find和xargs和exec和rsync
- BASH命令和SHELL脚本总结(2)常识篇
- BASH命令和SHELL脚本总结(1)入门篇
- BASH命令和SHELL脚本总结(3)命令篇
- BASH命令和SHELL脚本总结(17)在BASH中计算两天的间隔天数
- BASH命令和SHELL脚本总结(4)AWK篇
- BASH命令和SHELL脚本总结(18)使用ACK在指定类型的文件中进行查找
- BASH命令和SHELL脚本总结(13)BASH中的快捷键和简写
- Shell脚本test命令使用总结和实例
- Shell脚本test命令使用总结和实例