一、定義變數
在Shell中,用一個變數來存儲一個字元串或數字。定義一個變數需要按照以下格式:
variable_name=value
其中,variable_name表示變數名稱,value表示變數值。變數名需以字母或下劃線開頭。變數名中允許使用字母、數字和下劃線。變數名區分大小寫。
在Shell中定義變數的示例:
str="hello world"
num=100
echo "str="$str
echo "num="$num
輸出結果如下:
str=hello world
num=100
二、通過命令行參數傳遞參數
在Shell腳本中,可以通過命令行參數傳遞參數。使用特殊變數$0、$1、$2、$3……來獲取命令行參數。其中,$0表示腳本名稱,$1表示第1個參數,$2表示第2個參數,以此類推。
在Shell中通過命令行參數傳遞參數的示例:
#!/bin/sh
echo "腳本名稱:$0"
echo "第1個參數:$1"
echo "第2個參數:$2"
echo "第3個參數:$3"
運行該腳本並傳遞3個參數,結果如下:
腳本名稱:./test.sh
第1個參數:hello
第2個參數:world
第3個參數:100
三、特殊變數
在Shell中還有一些特殊變數,如下表所示:
變數名 | 含義 |
---|---|
$? | 上一個命令的退出狀態碼,0表示成功,其他表示失敗。 |
$$ | 當前進程的進程號。 |
$! | 上一個後台命令的進程號。 |
$# | 命令行參數的個數。 |
$* | 所有命令行參數,以單個字元串表示。 |
$@ | 所有命令行參數,以單個字元串表示,但每個參數都以引號括起來。 |
四、引號的使用
在Shell中,變數被引號括起來時有不同的含義:
- 雙引號:變數被雙引號括起來時,可以包含空格和特殊字元,並且可以被解析。
- 單引號:變數被單引號括起來時,變數名被當成普通字元串,不能被解析。
在Shell中引號的使用示例:
#!/bin/sh
str='hello world'
echo "str1="$str
str="hello world"
echo "str2="$str
輸出結果如下:
str1=hello world
str2=hello world
五、取消變數定義
在Shell中,可以使用unset命令取消變數的定義,變數的值將被清空。
在Shell中取消變數定義的示例:
#!/bin/sh
str="hello world"
echo "str1="$str
unset str
echo "str2="$str
輸出結果如下:
str1=hello world
str2=
六、變數替換
在Shell中,可以通過一些特殊的符號對變數進行替換。
- ${var}:用於獲取變數的值。
- ${var:-word}:變數未定義或者值為空時,返回word。
- ${var:=word}:變數未定義或者值為空時,設置為word。
- ${var:+word}:變數已定義且值不為空時,返回word。
- ${var:#pattern}:從變數開頭開始,刪除最短的與pattern匹配的子串。
- ${var:##pattern}:從變數開頭開始,刪除最長的與pattern匹配的子串。
- ${var:%pattern}:從變數結尾開始,刪除最短的與pattern匹配的子串。
- ${var:%%pattern}:從變數結尾開始,刪除最長的與pattern匹配的子串。
在Shell中變數替換的示例:
#!/bin/sh
str1="hello world"
echo "變數str1="$str1
echo "獲取變數str1的值:${str1}"
echo "未定義變數str2:${str2:-default}"
echo "設置變數str2的值為aaa:${str2:=aaa}"
echo "已定義變數str2:${str2:+default}"
echo "替換變數str1中的l為L:${str1/l/L}"
echo "刪除變數str1中的o及其之前的字元:${str1#*o}"
echo "刪除變數str1中的l及其之後的字元:${str1%%l*}"
輸出結果如下:
變數str1=hello world
獲取變數str1的值:hello world
未定義變數str2:default
設置變數str2的值為aaa:aaa
已定義變數str2:default
替換變數str1中的l為L:heLLo world
刪除變數str1中的o及其之前的字元:lo world
刪除變數str1中的l及其之後的字元:he
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/304471.html