SHELL DAY01(04):變量的擴展應用是怎麼實現的呢?

4.1 問題
本案例要求進一步熟悉Shell變量的賦值控制,主要練習或驗證下列內容:

三種引號對賦值的影響
使用read命令從鍵盤讀取變量值
使用export發佈全局變量
4.2 步驟
實現此案例需要按照如下步驟進行。

步驟一:三種引號對變量賦值的影響

1)雙引號的應用

使用雙引號可以界定一個完整字符串。

[root@svr5 ~]# xx=Tarena IT Group
-bash: IT: command not found                      //未界定時賦值失敗
[root@svr5 ~]# xx="Tarena IT Group"              //界定後成功
[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
What's happen ?                          //隨便輸入一些文字,按Enter鍵提交
[root@svr5 ~]# echo $str                  //查看賦值結果

What’s happen ?
爲了不至於使用戶不知所措、莫名其妙,推薦的做法是結合-p選項給出友好提示:

[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="Tarena IT Group"
[root@svr5 ~]# echo $yy
Tarena IT Group
[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                              //查看全局變量的值 .. ..
Tarena IT Group
[root@svr5 ~]# echo $XX
1234
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章