1.for循環
for循環用于值清單中的相同指令的重複
#!/bin/bash
while [ -z "$*" ]
do
echo "please give a num"
exit 0
done
for ((i=0;i<$1;i++))
((j=j+i))
echo $j
測試
2.bash位置參數
有兩種簡單的方法可以将使用者輸入讀入bash中的變量。第一個方法是使用read提示用
戶輸入(使用-p選項)并将其直接存儲到一個或多個變量:
互動式輸入
# read -p 'enter your first and last name: ' first last
另一個方法是使用位置參數來讀取傳遞給腳本的指令行參數或選項輸入。各種特殊
變量存儲傳遞的選項編号
bash解析的個别參數或整個原始指令行。
指定的位置參數總數:$#
位置參數自身:$0、$1、$2、$3....
所有位置參數: $@、$*
echo $*
echo $0
echo $1
echo $2
echo $3
echo $#
測試:
3.退出狀态
linux指令完成時,将傳回退出狀态。成功完成程式時,将傳回0的推出狀态。這被bash
當作邏輯true值。非零退出狀态通常表示發生了錯誤,并且被bash當作邏輯false值。
例如:grep的退出狀态的含義:
0 – 在指定的檔案中找到了模式
1 – 在指定的檔案中未找到模式
>1 – 一些其他錯誤(無法打開檔案、錯誤的搜尋表達式等)
推出狀态的值被存儲在"?"中,可以使用以下指令檢視:
# echo $?
echo $?
4.test條件判斷
test指令可用于評估bash腳本中的表達式。它評估其參數所指定的表達式,如果表達式
為true,傳回零退出狀态,如果表達式為false,則傳回非零退出狀态。test具有替代語
法,使用方括号"[]"将表達式括起來,這樣更易于閱讀
echo "please give a varchar"
exit 0
[ -f "$1" ]&&echo "$1 is a file"
[ -d "$1" ]&&echo "$1 is a direction"
[ -b "$1" ]&&echo "$1 is a 裝置"
[ -x "$1" ]&&echo "$1 is a 可執行檔案"
[ -c "$1" ]&&echo "$1 is a char"
5.if語句
if指令檢查if後面的指令或清單的退出值。如果第一個指令評估為true/零,則運作then
之後的指令清單,直至任一else。如果第一個指令評估為false/非零,則運作else與fi之
間的指令清單(反向平寫if,标記if塊的結束)。
文法:if command; then command; command2; else command3; fi
水仙花數(i隻能給大于99,小于1000的數)
while [ -z "$1" ]
echo "please give me a num"
exit 0
for ((i=100;i<$1;i++))
let x=$i/100
m=`echo ${x%.*}`
let y=($i-m*100)/10
n=`echo ${y%.*}`
let z=$i-m*100-n*10
o=z
num1=$((m*100+n*10+o))
num2=$((m*m*m+n*n*n+o*o*o))
if [ $num1 -eq $num2 ];then
echo "水仙花數$num1"
fi
6.case語句
case語句 :它能夠把變量的内容與多個模闆進行比對,再根據成功比對的模闆去決定應該執行哪
case $1 in
start | begin)
echo "start something"
;;
stop | end)
echo "stop something"
reload | restart)
echo "restart or reload something"
*)
echo "you no give me a command" esac
7.expect
在shell中利用expect實作自動應答腳本
8.函數
action () {
if
[ -z "$3" ]
then
echo "please give me a userfile"
elif
[ ! -e "$3" ]
echo "$3 is not exist!!"
else
[ $1 "$3" ]&&echo "$2"
fi
}
action -f 'this is a file' $1
action -d 'this is a direction' $1
action -b 'this is a 裝置' $1
action -c 'this is a char' $1
9.環境變量
shell和腳本使用變量來存儲資料 ,有些變量可以連同它們的内容傳遞給子程序,這些
變量我們稱之為環境變量