詳細介紹Linux shell腳本基礎(chǔ)學(xué)習(xí)(八)
Linux shell腳本前面的實例是說明十進制和二進制的轉(zhuǎn)換,還以一個有關(guān)文件循環(huán)的實例來結(jié)束這部分內(nèi)容的學(xué)習(xí)。相信Linux shell腳本的基礎(chǔ)學(xué)習(xí)的學(xué)習(xí)者應(yīng)該能夠掌握一些簡單的Linux shell腳本的編寫。
文件循環(huán)程序
或許您是想將所有發(fā)出的郵件保存到一個文件中的人們中的一員,但是在過了幾個月以后,這個文件可能會變得很大以至于使對該文件的訪問速度變慢。下面的 腳本rotatefile可
以解決這個問題。這個腳本可以重命名郵件保存文件(假設(shè)為outmail)為outmail.1,而對于 outmail.1就變成了outmail.2 等等等等...
#!/bin/sh
# vim: set sw=4 ts=4 et:
ver="0.1"
help()
{
cat <
rotatefile -- rotate the file name
USAGE: rotatefile [-h] filename
OPTIONS: -h help text
EXAMPLE: rotatefile out
This will e.g rename out.2 to out.3, out.1 to out.2, out to out.1
and create an empty out-file
The max number is 10
version $ver
HELP
exit 0
}
error()
{
echo "$1"
exit 1
}
while [ -n "$1" ]; do
case $1 in
-h) help;shift 1;;
--) break;;
-*) echo "error: no such option $1. -h for help";exit 1;;
*) break;;
esac
done
# input check:
if [ -z "$1" ] ; then
error "ERROR: you must specify a file, use -h for help"
fi
filen="$1"
# rename any .1 , .2 etc file:
for n in 9 8 7 6 5 4 3 2 1; do
if [ -f "$filen.$n" ]; then
p=`expr $n + 1`
echo "mv $filen.$n $filen.$p"
mv $filen.$n $filen.$p
fi
done
# rename the original file:
if [ -f "$filen" ]; then
echo "mv $filen $filen.1"
mv $filen $filen.1
fi
echo touch $filen
touch $filen
這個腳本是如何工作的呢?在檢測用戶提供了一個文件名以后,我們進行一個9到1的循環(huán)。文件9被命名為10,文件8重命名為9等等。循環(huán)完成之后,我們將原始文件命名為文件1
同時建立一個與原始文件同名的空文件。
調(diào)試
最簡單的調(diào)試命令當(dāng)然是使用echo命令。您可以使用echo在任何懷疑出錯的地方打印任何變量值。這也是絕大多數(shù)的shell程序員要花費80%的時間來調(diào)試程序的原因。Shell程序的
好處在于不需要重新編譯,插入一個echo命令也不需要多少時間。
shell也有一個真實的調(diào)試模式。如果在腳本"strangescript" 中有錯誤,您可以這樣來進行調(diào)試:
sh -x strangescript
這將執(zhí)行該腳本并顯示所有變量的值。
shell還有一個不需要執(zhí)行腳本只是檢查語法的模式。可以這樣使用:
sh -n your_script
這將返回所有語法錯誤
這里L(fēng)inux shell腳本基礎(chǔ)學(xué)習(xí)就全部結(jié)束了。感謝大家的支持。
【編輯推薦】
- 詳細介紹Linux shell腳本基礎(chǔ)學(xué)習(xí)(一)
- 詳細解析Linux服務(wù)器攻擊的分級防御
- 詳細介紹Linux優(yōu)盤引導(dǎo)安裝(一)自引導(dǎo)方式
- 詳述Linux系統(tǒng)防火墻的修改
- 詳細介紹Linux shell腳本基礎(chǔ)學(xué)習(xí)(七)