@算術運算
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$ ] && 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" ]
dorsync --bwlimit=819210.1.1.1::root/data/$long_log_date/log_$hour_original* $input_cd_log_dir
if [ $? == 0 ]; then
is_success=1
break
fitotal_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" ]
donum=$(($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
Shell指令碼之Bash內部命令
本文是自己學習的總結,僅以作分享。若有不對的地方歡迎指正。bash內部命令 有些內部命令在目錄列表是看不見的,他們有shell本身提供,常用的內部命令有 echo eval exec export readonly read shift wait exit和 echo 將變數名錶指定的變數顯示到標準...
BASH命令和SHELL指令碼總結 5 賦值篇
把命令執行結果賦值給變數 result grep o href website address1 wc l 如何把檔案中的每一行賦值給乙個陣列 array catfile array a bc def echo 取全部元素 a b c def echo 取第乙個元素a echo 取得陣列元素的個數4...
BASH命令和SHELL指令碼總結 7 判斷篇
用在測試判斷中 a 5 b 7 echo a輸出結果為1 類似的判斷語句有 小於 大於 小於或等於 大於或等於 等於 不等於 使用條件語句來判斷檔案屬性 可以用man test看到更多詳細情況 格式 操作符 filename e 檔案存在返回1,否則返回0 s 檔案大小不為零返回1,否則返回0 r ...