例36 乙個數字的行
要求:用shell實現,把乙個文件中只有乙個數字的行給列印出來
要點:用sed替換所有非數字的字元為空的,剩下的就是數字
#!/bin/bash
while read line
don=`echo $line | sed 's/[0-9]//g'|wc -l`
if [ $n -eq 1 ]
then
echo $line
fidone < 1.txt
例子37 日誌切割歸檔
要求:系統logrotate工具,可以完成日誌切割,歸檔。寫乙個shell指令碼實現類似的歸檔功能
舉例:假如服務輸出的日誌是1.log,要求每天歸檔乙個,1.log第二天就變成1.log.1第三天就變成1.log.2第四天1.log.4一直到1.log.5
要點:mv改名字
#!/bin/bash
cd /data/logs
log=1.log
mv_log()
[ -f $1 ] && mv $1 $2
[ -f 1.log.5 ] && rm 1.log.5
for i in `seq 4 -1 1`
doj=$[$i+1]
mv_log $log.$i $log.$j
done
mv 1.log 1.log.1
要點:for迴圈遍歷所有ip
看ip是否可以ping通
for i in `seq 1 254`
doif ping -c 2 -w 2 192.168.0.$i >/dev/null 2>/dev/null
then
echo " 192.168.0.$i is ok"
else
echo "192.168.0.$i is not ok!"
fidone
例39 檢查指令碼錯誤
寫乙個shell指令碼,檢查指定的shell指令碼是否有語法錯誤,若有錯誤,首先提示錯誤資訊,然後提示使用者輸入q或者q退出指令碼,輸入其他內容則直接用vim開啟該shell指令碼
核心sh -n
#!/bin/bash
sh -n $1 2>/tmp/sh.err
if [ $? -ne 0 ]
then
cat /tmp/sh.err
read -p "請輸入q或者q退出指令碼:" c
if [-z "$c"]
then
vim $1
exit
fiif [ $c == q ] || [ $c == q ]
then
exit 0
else
vim $1
exit
fielse
echo"指令碼$1沒有語法錯誤"
fi例40 格式化數字輸出
要求:輸入一串隨機數字,然後按千分位輸出
比如輸入一串數字為"123456789",輸入為123,456,789.
要點:遍歷所有數字,每個數字一行存入臨時檔案
#!/bin/bash
n=`echo $1|wc -l`
for d in `echo $1 | sed 's/./& /g'`
don2=$[$n%3]
if [ $n2 -eq 0 ]
then
echo -n ",$d"
else
echo -n "$d"
fin=$[$n-1]
done | sed 's/^,//'
echo
shell訓練計畫30天之第六天
一 什麼是shell 1.shell是一種程式語言 2.shell可以使用邏輯判斷和迴圈等語法 3.shell支援自定義函式 4.shell是系統命令的集合 5.shell指令碼可以實現自動化運維,可以大大增加運維的效率 6.shell其實就是把系統的命令寫進檔案中,有點類似於windows的批處理...
shell訓練計畫30天之第一天
一 什麼是shell 1.是命令直譯器 2.支援特定的語法 邏輯判斷 迴圈 3.每個使用者可以有自己特定的shell 4.centos7預設shell為bash bourne agin shell 5.其他的shell zsh ksh 二 命令歷史 1.按向上方向鍵檢視歷史命令 2.歷史命令檔案存在...
shell訓練計畫30天之第七天
一 if判斷檔案 目錄屬性 f file 判斷是否是普通檔案,且存在 bin bash f tmp aminglinux if f f then echo f exist else touch f fi d file 判斷是否是目錄,且存在 bin bash f tmp aminglinux if ...