很多時候在我們寫shell指令碼的過程中,變數值為空的時指令碼會報錯,如果通過判斷去排除變數的值為空會相對麻煩,所以我們通常會為變數設定乙個預設值,避免在指令碼執行的過程中報錯,這就是變數的初始值賦值。
經常使用的初始值賦值的方法有以下兩種,都能對乙個變數賦予乙個初始值,但是它們也有區別:
1.$
這種方法賦予變數的初始值,只是臨時呼叫賦予的值,實際上變數var的值並不改變,仍然為空;
例項:
[root@redhat_192
.168
.0.1220:
10:15~
]#a=$
[root@redhat_192
.168
.0.1220:
10:20~
]#echo $a
1[root@redhat_192
.168
.0.1220:
10:23~
]#echo $b
------
>空值
2.$
這種方法賦予的變數的初始值,不僅能夠呼叫賦予的值,同時還給var賦予乙個值,這是候var的值發生改變,不為空
[root@redhat_192
.168
.0.1220:
10:27~
]#a=$
[root@redhat_192
.168
.0.1220:
11:15~
]#echo $a
1[root@redhat_192
.168
.0.1220:
11:18~
]#echo $b1--
--->b的值不為空,與賦予的初始值相等
補充:
shell 指令碼 $的含義:
value = $
$1 :代表傳入的第乙個引數。
如果$1存在並且不為空那麼value=$1,否則就是a=false;
:-為三元運算。
$0:代表執行指令碼的名字。
$2,$3等等代表一次傳入的引數。
$#代表引數個數。
$$ 代表當前指令碼的執行程序id(pid)
$? 代表執行完上乙個指令的執行結果。
字串初值的處理
問題 本案例要求編寫乙個指令碼sumx.sh,求從1 x的和,相關要求如下 從鍵盤讀入x值 當使用者未輸入任何值時,預設按1計算 方案步驟 實現此案例需要按照如下步驟進行。1 只取值,若變數var已存在且非null,則返回 var 的值 否則返回字串 word 原變數var的值不受影響。變數值已存在...
字串初值的處理
通過 判斷變數是否存在,決定變數的初始值。實現此案例需要按照如下步驟進行。1 只取值,若變數var已存在並且非null,則返回 var的值 否則返回字串 word 原變數var的值不受影響。變數值已存在的情況 root svr5 xx 11 root svr5 echo xx 檢視原變數值 11 r...
shell指令碼程式設計 字串擷取 字串初值設定
shell指令碼程式設計 字串擷取 字串初值設定 1.只替換第乙個匹配結果 將第乙個8替換為xx 2.替換全部匹配結果 將phone變數中所有8替換為xx echo 字串掐頭去尾 a head 1 etc passwd echo a root x 0 0 root root bin bash 匹配所...