【unix學習】shell程式設計—引數、流程控制、算數運算、函式
阿新 • • 發佈:2018-12-24
shell引數
符號說明
echo $0
$1-$9 代表引數的位置,1代表第一個引數,,,,
$* 把全部引數當作一個字串形式的引數,"$1 $2 … $n"的形式
[email protected] 把引數當作列表形式,與$*相同,"$1" "$2" … "$n" 的形式,注意引號的差別。
$# 引數的個數
$$ 執行的當前程序ID號
$? 顯示上一個程序是否執行成功,成功執行返回0,執行不成功返回1
$! 後臺執行的最後一個程序的ID號
$* 與 [email protected] 區別:
相同點:都是引用所有引數。
不同點:只有在雙引號中體現出來。
假設在指令碼執行時寫了三個引數 1 、2、3,,則 " * " 等價於 "1 2 3"(傳遞了一個引數),而 "@" 等價於 "1" "2" "3"(傳遞了三個引數)。
$* 與$@ 區別
for i in "$*"
do
echo $i
done
#結果#
1 2 3
for i in "[email protected]"
do
echo $i
done
#結果#
1
2
3
變數賦值
[s14516@gdufs]$name="koo" #賦值之間別有空格
[s14516@gdufs]$echo name
name
[s14516@gdufs]$echo $name
koo
shell指令碼
#! 告訴系統其後路徑所指定的程式即是解釋此指令碼檔案的 Shell 程式。
if語句
#!/bin/bash
read input
if [ $input = "gdufs" ]
then
echo "right"
else
echo "wrong"
fi
case語句
#!/bin/bash
hour=`date "+%H"`
case $hour in
[0-8]|19|2[0-3])
echo "good night"
;;
9|1[0-2])
echo "good morning"
;;
1 [3-8])
echo "good afternoon"
;;
*) #表示其他情況
esac
迴圈
for name in zhangsan lisi wangwu
do
echo $name
done
expr 算數表達
1.四則運算
+ - \* / %
這小表示式兩邊需要有空格
[[email protected]]$expr 4 \* 3
2.賦值表示式
[s14516@gdufs]$a=`expr 4 \* 3`
[s14516@gdufs]$echo $a
12
expr只支援整型運算
3.浮點型運算
[s14516@gdufs]$echo 4 \* 3.2 | bc
4.while迴圈
#!/bin/bash
read -p 'please input' n
i=1
while [ $i -le $n ]
do
echo $i
i=`expr $i + 1`
done
5.求和
#!/bin/bash
read -p 'please input: ' n
i=1
sum=0
while [ $i -le $n ]
do
sum=`expr $sum + $i`
i=`expr $i + 1`
done
echo $sum
shell函式
1.無引數函式
#!bin/bash
greet(){
echo 'hello'
}
greet
2.有引數函式
#!/bin/bash
greet(){
echo "hello, $1"
## $1 表示第一個引數,不需要在方法上寫引數
}
read -p 'please input: ' name1 name2
greet $name1
greet $name2