shell 腳本複習

目標

寫個測試腳本,重啓50次 , 每次重啓後執行一些命令,保存到文本,然後再次重啓 。簡單腳本, 直接 shell 走一波。

思路

  1. 每次輸出一波文本 , 則每次用一個目錄來保存這些文本
  2. 重啓後直接執行命令 , 那麼需要在 rc.local 添加執行命令
  3. 執行完再重啓, 就需要 reboot 了
  4. 次數計數,似乎只能在本地文本中保存次數了。先把次數寫到文本,重啓後,再讀,再累加。

腳本

這裏是僞腳本,原腳本忘記抄下來了。可能有部分不對的地方。

#!/bin/bash
# 當前目錄
cur_dir=`pwd`
#計數文本
cot="$cur_dir/cot.txt"
#最大次數
limit=50

if[[ -e $cot ]]
then
    #計數文本存在
    #取文本內容
    num=`cat $cot`
    #先計數加1
    echo $((num+1)) > $cot
    #休息一會兒,等系統初始化
    sleep 5m
else
    #第一次,沒有文本,計數文本不存在,初始化一個文本
    echo "1" > $cot
fi

。。。。。。。
#要執行的腳本
。。。。。。

#取數字
num=`cat $cot`
#判斷是不是到達最大次數了
if[[ $((num)) -eq $limit ]]
then
    #到次數,退出
    exit 0  
fi
#沒到次數,重啓
shutdown -r

簡單一個腳本,搞了幾個小時,還是忘性大。。。

簡單幾個點吧, 這裏再理一下。

shell 字段串轉數字

語法:$((num))

轉數字後可以跟其他數字做比較,也可以做計算。也可以直接拿字符串的數字,在這個語法裏計算

例如:

num="123"
$((num+1))   # 結果是:124

取字符串長度

這裏也提一下吧 ,語法: ${#num}

num="abc123"
${#num}         # 結果是: 6

文件的判斷符號

  • -b $FILE :如果FILE存在且爲塊特殊文件,則爲True。

  • -c $FILE :如果FILE存在且爲特殊字符文件,則爲True。

  •  -d $FILE :如果FILE存在且爲目錄,則爲True。

  •  -e $FILE :如果FILE存在且爲文件,則爲True,無論類型(節點,目錄,套接字等)如何。

  •  -f $FILE :如果FILE存在且爲常規文件(不是目錄或設備),則爲True。

  •  -G $FILE :如果FILE存在且與運行命令的用戶具有相同的組,則爲True。

  •  -h $FILE :如果FILE存在且爲符號鏈接,則爲True。

  •  -g $FILE :如果FILE存在且設置了set-group-id(sgid)標誌,則爲True。

  •  -k $FILE :如果FILE存在且設置了粘滯位標誌,則爲True。

  •  -L $FILE :如果FILE存在且爲符號鏈接,則爲True。

  •  -O $FILE :如果FILE存在並且由運行該命令的用戶擁有,則爲True。

  •  -p $FILE :如果FILE存在且爲管道,則爲True。

  •  -r $FILE :如果FILE存在且可讀,則爲True。

  •  -S $FILE :如果FILE存在且爲套接字,則爲True。

  •  -s $FILE :如果FILE存在且非零大小,則爲True。

  •  -u $FILE :如果設置了exists和set-user-id(suid)標誌,則爲True。

  •  -w $FILE :如果FILE存在且可寫,則爲True。

  •  -x $FILE :如果FILE存在且可執行,則爲True。

sleep 命令

sleep NUMBER [SUFFIX]...

NUMBER可以是正整數或浮點數。

SUFFIX可以是下列之一:

s - 秒(默認)
m - 分鐘
h - 小時
d - 天

sleep 是阻塞,且不可停止。只能殺進程了

數字的比較大小

  • -gt 大於
  • -lt 小於
  • -eq 等於
  • -ne 不等於
  • -ge 大於等於
  • -le 小於等於

重啓命令

  • reboot : 強制重啓,強制停止一切進程。
  • shutdown -r : 等正在進行的進程結束後,再重啓

輸出到文本

  • > : 清空文本,再寫入
  • >> : 追加到文本最後,有換行

如果文章有幫助到您,請點個贊,您的反饋會讓我感到文章是有價值的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章