shell訓練計畫30天之第十九天

2021-09-26 22:44:40 字數 1772 閱讀 2182

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