BASH命令和SHELL指令碼總結 9 其它篇

2021-06-09 21:49:04 字數 2589 閱讀 8761

@算術運算

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 ...