變量
變量的含義
什么是量?
- 量就是數(shù)據(jù).
什么是變量?
- 數(shù)據(jù)可以發(fā)生改變就是變量。
在一個腳本周期內(nèi),其值可以發(fā)生改變的量就是變量。
什么叫做一個腳本周期?
- 一個腳本周期我們可以簡單的理解為當前的shell文件。
變量是shell中不可或缺的一部分,也是最基礎、最重要的組成部分。
變量的定義與使用(重點)
變量,先定義后使用。
定義形如:hello=“hello 666”
使用形如:echo $hello
變量就是由2部分組成,一個是變量名(左邊),另外一部分是變量的值(右邊),類似于Java中變量的定義,只不過Java中的變量還有個變量類型。
變量名和變量值是什么關(guān)系??
變量名和變量值是使用和被使用關(guān)系; 我們的變量名來使用變量值;
在使用變量的時候一定需要在變量名前面添加一個$
符號,該要求在其他語言中也存在的(例如php)。
變量名的規(guī)范
注意,變量名后面的等號左右不能有空格
,這可能和你熟悉的所有編程語言都不一樣。同時,變量名的命名須遵循如下規(guī)則:
- 命名只能使用英文字母,數(shù)字和下劃線,首個字符不能以數(shù)字開頭。
- 中間不能有空格,可以使用下劃線“_”。
- 不能使用標點符號。
- 不能使用bash里的關(guān)鍵字(可用help命令查看保留關(guān)鍵字)。
問題:以下哪個shell變量名是合法的?A. var
B.?var C. user*name D.echo
案例1:使用變量改寫入門腳本中的第1個shell腳本。
#!/bin/bash
hello="hello world 666"
echo $hello
[root@localhost aaa]# ./test.sh
hello world 666
關(guān)于單雙引號的問題:
- 雙引號能夠識別變量,雙引號能夠?qū)崿F(xiàn)轉(zhuǎn)義(類似于“*”)
- 單引號是不能識別變量,只會原樣輸出,單引號是不能轉(zhuǎn)義的
案例2:定義一個變量,輸出當前時間,要求格式為“年-月-日 時:分:秒”。
#!/bin/bash
datetime=`date +'%F %T'`
echo $datetime
注意:反引號(esc鍵下方的那個鍵),當在腳本中需要執(zhí)行一些指令并且將執(zhí)行的結(jié)果賦給變量的時候需要使用“反引號”。
只讀變量
語法:readonly 變量名
案例:定義變量a并且其值為10,隨后設置其為只讀變量,再去嘗試重新賦值
#!/bin/bash
a=10
readonly a
a=20
echo $a
[root@localhost aaa]# ./test2.sh
./test2.sh: line 4: a: readonly variable
10
接收用戶輸入
語法:**read -p 提示信息 變量名**
案例:編寫一個腳本test6.sh,要求執(zhí)行之后提示用戶輸入文件的名稱(路徑),然后自動為用戶創(chuàng)建該文件
#!/bin/bash
read -p '請輸入需要創(chuàng)建的文件路徑' filepath
touch $filepath
echo '文件創(chuàng)建成功,路徑為:'$filepath
刪除變量
語法:unset 變量名
案例:定義變量b=20,再輸出b的值,隨后刪除b,最后再輸出下b
#!/bin/bash
b=10
echo $b
unset b
echo $b
條件判斷語句
老婆給當程序員的老公打電話:下班順路買一斤包子帶回來,如果看到賣西瓜的,買一個。當晚,程序員老公手捧一個包子進了家門…老婆怒道:你怎么就買了一個包子?!老公答曰:因為看到了賣西瓜的。
把程序員老婆的話當作一段需求分析一下吧。買一斤包子是一個確定無疑的需求項,無論后面是什么情況什么條件,前面這一斤包子是肯定要買的??吹劫u西瓜的是一個條件判斷,后面“買一個”是一個模糊不清的需求項,買一個什么呢?需求里沒說啊??蛻舭堰@個當作開發(fā)人員默認了解的內(nèi)容了??墒亲鳛橐粋€成熟合格的程序員,該老婆的丈夫應該馬上跟進確認需求“買一個什么?”,要不然程序可怎么寫呢?所以笑話里該程序員是不合格的,起碼是不積極不負責的。在沒有明確需求的情況下,他只能按照自己的理解來完成工作了。那比較可能的結(jié)果就有如下幾種:
- 看到賣西瓜的,買一個西瓜
如果看到賣西瓜的
那么
買一個西瓜
否則
買一斤包子 - 看到賣西瓜的,買一個包子
如果看到賣西瓜的
那么
買一個包子 - 看到賣西瓜的,買一個賣西瓜的
- 看到賣西瓜的,買一個老婆一直想買的東西
- 看到賣西瓜的,隨便買一個東西
上述1和2下面的條件漢字描述稱之為“偽代碼”,也是屬于條件表達式的語法。
語法1(一個條件):
if condition
then
command1
command2
…
fi
單行寫法(一般在命令行中執(zhí)行的時候):if [ condition ]; then command; fi
語法2(兩個條件):
if condition
then
command1
command2
…
else
command
fi
語法3(多個條件):
if condition1
then
command1
elif condition2
**then **
command2
else
commandN
fi
相關(guān)文章:Linux之Shell基礎入門
本文內(nèi)容到此結(jié)束了,
如有收獲歡迎點贊??收藏??關(guān)注??,您的鼓勵是我最大的動力。
如有錯誤?疑問??歡迎各位指出。
主頁:共飲一杯無的博客匯總?????文章來源:http://www.zghlxwxcb.cn/news/detail-557939.html保持熱愛,奔赴下一場山海。??????文章來源地址http://www.zghlxwxcb.cn/news/detail-557939.html
到了這里,關(guān)于Linux之Shell進階(變量和條件判定語句)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!