學習目標
要求進一步熟悉shell變數的賦值控制,主要練習或驗證下列內容:
三種引號對賦值的影響
使用read命令從鍵盤讀取變數值
使用export發布全域性變數
步驟
需要按照如下步驟進行。
步驟一:三種引號對變數賦值的影響
1)雙引號的應用
使用雙引號可以界定乙個完整字串。
[root@svr5 ~]# xx=follow heard
-bash: it: command not found //未界定時賦值失敗
[root@svr5 ~]# xx="follow heard" //界定後成功
[root@svr5 ~]# touch aa bb //建立了兩個檔案
[root@svr5 ~]# touch "aa bb" //建立了乙個檔案
[root@svr5 ~]# ls //檢視結果
2)單引號的應用
界定乙個完整的字串,並且可以實現遮蔽特殊符號的功能。
[root@svr5 ~]# test=11
[root@svr5 ~]# echo "$test"
[root@svr5 ~]# echo '$test'
3)反撇號或$()的應用
使用反撇號或$()時,可以將命令執行的標準輸出作為字串儲存,因此稱為命令替換。
[root@svr5 ~]# tar -czf log-`date +%y%m%d`.tar.gz /var/log
步驟二:使用read命令從鍵盤讀取變數值
1)read基本用法
執行後從會等待並接受使用者輸入(無任何提示的情況),並賦值給變數str:
[root@svr5 ~]# read str
[root@svr5 ~]# echo $str //檢視賦值結果
[root@svr5 ~]# read -p "請輸入乙個整數:" i
請輸入乙個整數:240
[root@svr5 ~]# echo $i
240
2)stty終端顯示控制
將回顯功能關閉(stty -echo),
將回顯功能恢復(stty echo)。
[root@svr5 ~]# vim user.sh //建立乙個測試指令碼
#!/bin/bash
read -p "請輸入使用者名稱:" username //讀取使用者名稱
stty -echo //關閉回顯
read -p "請輸入密碼:" passwd //讀取密碼
stty echo //恢復回顯
echo "" //恢復回顯後補乙個空行
useradd "$username"
echo "$passwd" | passwd --stdin "$username"
[root@svr5 ~]# chmod +x user.sh //新增執行許可權
執行測試指令碼user.sh,驗證效果:
[root@svr5 ~]# ./user.sh
請輸入使用者名稱: root //輸入root,回車
請輸入密碼: //輸入1234567(不會顯示),回車
步驟三:使用export發布全域性變數
預設情況下,自定義的變數為區域性變數,只在當前shell環境中有效,而在子shell環境中無法直接使用。比如已定義的school變數,當進入到sh或bash子shell後,變數school將處於未定義的狀態:
[root@svr5 ~]# yy="follow heard"
[root@svr5 ~]# echo $yy
follow heard
[root@svr5 ~]# bash //開啟bash子程序
[root@svr5 ~]# echo $yy //檢視school變數值無結果
[root@svr5 ~]# exit //返回原有shell環境
exit
[root@svr5 ~]# echo $yy
若希望定義的變數能被子程序使用,可以使用export命令將其發布為全域性變數。使用export發布時,只需指定變數名(可以有多個)即可,也可以通過export命令直接設定新的全域性變數:
[root@svr5 ~]# export yy //發布已定義的變數
[root@svr5 ~]# export xx="1234" //發布新變數
驗證剛剛發布的全域性變數:
[root@svr5 ~]# bash //進入bash子shell環境
[root@svr5 ~]# echo $yy //檢視全域性變數的值 .. ..
follow heard
[root@svr5 ~]# echo $xx
1234
shell初接觸之變數篇
shell變數 shell中的變數在定義的時候不需要美元符號,而在使用的時候需要變數,而他的定義原則和php中定義的原則相同,以英文本母 數字 下劃線開頭,中間不能有空格但可以有下劃線,不能使用標點符號,不能使用bash的關鍵字。在使用變數的時候最好加上花括號,方便辨認。給變數重新賦值的時候不需要使...
shell語法之變數的使用
1 變數 在shell裡,使用變數之前通常並不需要事先為它們做出宣告。你只是通過使用它們 比如當你給它們賦初始值時 來建立它們。在預設情況下,所有變數都被看做字串來儲存,即使它們被賦值為數值時也是如此。shell和一些工具程式會在需要時把數值型字串轉換為對應的數值以對它們進行操作。linux是乙個區...
Shell變數的擴充套件應用
問題 本案例要求進一步熟悉shell變數的賦值控制,主要練習或驗證下列內容 三種引號對賦值的影響 使用read命令從鍵盤讀取變數值 使用export發布全域性變數 步驟 實現此案例需要按照如下步驟進行。步驟一 三種引號對變數賦值的影響 1 雙引號的應用 使用雙引號可以界定乙個完整字串,也允許在範圍內...