shell程式設計是乙個弱型別的程式語言:
弱型別程式設計的語言,變數一般不用宣告變數的型別和長度,程式執行過程可以改變變數型別;程式的執行一般不需要程式有可執行程式,且程式的執行需要借助直譯器,這種直譯器是需要有執行許可權的,將程式**翻譯一句執行一句,如python、php、shell等語言。
與之相對的是強型別的程式語言:
強型別的程式語言中的變數,一般需要宣告其型別和長度,程式執行過程中不能改變變數的型別;程式開發需要開發環境,程式需要經過編譯器編譯成二進位制可執行檔案後,再執行,如go語言。
shell變數
shell中的變數,按照其生效的作用域可以分為如下幾類變數:
命令的堆砌,按照實際需求,結合命令流程控制語句實現的源程式。
整數運算和小數運算
#判斷變數值是否為整數的例子:
#非整數相加報錯
~]# expr 1 + 1.1
expr: non-integer argument
#檢視狀態值為2
[root@lg ~]# echo $?
2#整數和字串相加報錯
[root@lg ~]# expr 1 + var
expr: non-integer argument
#檢視狀態值為2
[root@lg ~]# echo $?
2#若整數運算則能正常執行
~]# expr 1 + 1
2[root@lg ~]# echo $?
0
#整數運算:+、-、*、/、%、^
~]# bc <<< 1+1
2~]# echo "1+1"|bc
2#小數運算:scale=n;宣告保留小數點n位,需注意bc在進行除法運算時才會保留小數點後n位
~]# echo "scale=2;3/2"|bc
1.50
#進製轉換:ibase=m表示轉換前數字是m進製,obase=m表示轉換後數字是m進製
~]# echo "ibase=10;obase=2;128"|bc
10000000
條件測試
方式一:test 表示式
方式二:[ 表示式 ]
數值測試
檔案測試
字串測試
邏輯運算子
布林運算子
條件測試語句
條件測試例項
表示式是命令執行結果,命令執行成功,條件就成立;也可以在命令前面加!表示命令執行失敗,條件成立。
if command ;then
fi迴圈
#eg1:求1到100的和。
#法一(指令碼內容如下):
#!/bin/bash
declare -i sum=0
for digit in $(seq 1 100)
do sum=$(($digit+$sum))
done
echo $sum
#法二:
~]# declare -i sum=0;for ((i=:1;i<=100;i++));do let sum=sum+i;done;echo $sum
5050
#eg2:向系統上的所有使用者問好。
#!/bin/bash
filename=/etc/passwd
for user in $(cut -d":" -f1 $filename)
do echo "hello, $user!"
done
#eg3:向系統上的所有使用者問好,並顯示他們的shell。
#!/bin/bash
filename=/etc/passwd
for user in $(cut -d":" -f1,7 $filename)
do echo "$user"| sed -rn 's#(.*[^/]):(/.*)#hello, \1! your shell is \2.#p'
done
#!/bin/bash
linefile=./anaconda-ks.cfg
declare -i sum=0
while read -r line
do echo "$sum,$line"
let sum++
done < $linefile##
ifs=$'\n'
for line in $(cat $linefile);do
echo "$sum: $line"
done
迴圈控制語句
break:跳出迴圈。
case語句
case $變數 in
value1)
語句1;;
value2)
語句2;;
value3 | value4)
語句3;;
*)語句5
esac
shell只支援一維陣列,不支援多維陣列。
函式執行的狀態結果
$?:獲取函式的執行結果;
return定義函式執行狀態結果值,0-255
有return的地方意味著函式執行結束。
函式的執行結果
`functionname`
可以使用``或$()來獲取函式的執行結果
函式傳參
functionname var1 var2
向functionname傳遞var1 和 var2
函式參與迴圈如何將echo出的內容顏色化顯示:
顯示顏色格式:
\033[numm strings \033[0m
\033:開啟顏色控制
[numm:num是數字控制,不同的數字表示不同的控制方法,包括字型、顏色、字型背景色控制方法
strings:表示被設定該顏色的字串
\033[0m:表示顏色控制結束
控制方法:多個控制方法用分號隔開
1.字型:1-7(1:加粗,3:斜體,4:下劃線,5:閃爍,7,顏色反轉)
eg:~]# echo -e '\033[7;5m1\033[0m' 1 #閃爍和顏色反轉
2.字型顏色:31-37(31:紅色,32:綠色,33:黃色,34:藍色,35:紫色,37:白色)
3.字型背景:41-47(顏色和字型顏色序號相對應)
Shell程式設計 shell特性
linux會預設記錄1000條歷史記錄,可通過 echo histsize 檢視,如果講histsize更改為2000,那麼會預設儲存2000條。1000條記錄儲存在家目錄的 bash history 中,僅當使用者正常退出當前shell時,當前shell中執行的命令才會儲存到 bash histo...
Shell程式設計 Shell函式
shell函式 1.將命令序列按格寫在一起 2.可方便重複使用命令序列 3.shell函式定義 function 函式名 4.呼叫函式的方法 函式名 引數1 引數2 5.shell函式應用示例 1 兩個數字求和 要求 通過sum 定義函式 兩個數求和 方法一 root localhost vim d...
Shell程式設計
1 建立指令碼 vi emacs等即可 bin sh 2 shell變數 對shell來講,所有的變數的取值都是乙個字串 shell是一種解釋性語言,變數無需事先定義 shell中的系統變數 程式命令列引數的數目 儲存前乙個命令的返回值 0 當前程式名 以 1 2 形式儲存所有輸入的命令列引數 以 ...