shell程式設計

2021-10-06 22:36:03 字數 3178 閱讀 6151

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 形式儲存所有輸入的命令列引數 以 ...