變數
變數名稱只能是英文與數字的組合,但是不能以數字開頭命名變數。變數預設型別為字串,變數與變數的值用=號鏈結,等號兩邊不能有空格,如果變數的值帶有空格,那麼就需要用到"或』將內容包起來,"或』必須是成對出現。雙引號裡面的特殊字元如$等會保持其原本特性,而單引號內的特殊字元則作為純文字。
echo
echo相當與python裡面的print,可以列印輸出到螢幕上,而shell裡面取出變數的值就是使用echo。例:echo $變數名 或 echo $。
例:var=」lang is $lang",當echo $var 輸出是
lang is zh_cn.utf-8
var=『lang is $lang』,echo $var 的輸出是
lang is $lang
字元拼接
day=sunday
var1="what day is today?"
var2="today is $day"
var3='today is $day'
echo $var1 var2
what day is today? today is sunday << ""包圍的內容保持特性
echo $var1 var3
what day is today? today is $day << ''包圍的內容為直接輸出
字元長度var=12345
echo $
5 << shell裡面變數的值一般為字元,這裡12345非數值
字元切片word='hello world!'
echo $
o wo << 字串從0開始,第乙個:4為從第5個字元開始,後面的:4為取4個字元,所以結果為o wo
變數內容遇到需要使用特殊符號($ * 』 回車 空白 等)的時候,可以使用\來轉義
例:job=「i』m a student」 或 job=i\'m\ a\ student,echo $job輸出的是
i』m a student
變數的值是一串命令的時候就需要用到`命令`或$(命令)。
例:version=`uname -r` 或a=$(ls -al)
取消變數使用unset 變數名
$$、$?、locale
echo $$也是變數,代表當前shell的pid
echo $?(上乙個執行的命令的回傳值),上乙個指令執行成功會返回0,失敗則會返回錯誤**
locale -a 用於檢視環境字符集
read、declare
陣列(array)
# 新建陣列
list=(
value0
value1
value2
value3
)# 陣列取值
echo $ << n為陣列的索引
# 取出所以的值
echo $
# 陣列賦值
list[n]=value
# 取得陣列元素的個數
echo nums=$
# 或者
echo nums=$
# 取得陣列單個元素的長度
echo long=$
刪除、取代
刪除變數的值從前面開始刪除:$
,#
是從前面
開始刪除匹配到的第乙個最短
的內容,##
是從前面
開始刪除匹配到的第乙個最長
的內容。例:
word=aaaab
echo $
aab >> 因為*是0至無限個,所以#匹配到的最短內容是aa
echo $
b >> ##匹配到的最長內容是aaaa
echo $
aaaab >> 要刪除第乙個最短內容是ab,而前面匹配到的是aa,故無法刪除
變數的值從後面開始刪除:$
,%
是從後面
開始刪除匹配到的第乙個最短
的內容,%%
是從後面
開始刪除匹配到的第乙個最長
的內容。例:
word=aaaab
echo $
aaa >> 匹配到的是最後的ab
echo $
>> 都匹配上,所以全刪了
echo $
aaaab >> 第乙個匹配到的是b,故無法刪除
**注意**
上面這2種方法總是從前面第乙個或後面第乙個開始刪除,如果第乙個匹配不上,則無法刪除,所以在中間的內容這種方法是無法刪除,例如變數的值是abc,上述方法是無法單獨刪除b的。
取代$
,前面是乙個/
時,則匹配到第乙個內容
進行取代,前面是//
是,則是全部
匹配上都進行取代。如果沒有新內容,可以理解為刪除
。例:
word=abab
echo $
cbab >> c取代第乙個a
echo $
cbcb >> c取代a
echo $
bab >> 第乙個a被刪除
echo $
bb >> 所有a被刪除
set、env、export、source、exec
乙個程序可以生成另乙個程序,生成的程序稱為子程序
,那麼相應的就有父程序
,子程序從父程序處會繼承一些遺傳因素,其中就包括本文的主題環境變數
。環境變數是一組特殊的字元型變數,由於具有繼承性質,環境變數也經常用於父子程序傳遞引數用。
shell學習筆記(一)
1.在變數的設定中,單引號與雙引號有什麼不同呢?單引號與雙引號的最大的不同在於雙引號仍然可以保有變數的內容,但單引號僅能是一般字元,而不會有特殊符號。2.在指令下達的過程中,quote 這個符號代表的意義為何?在一串指令中,在 之內的指令將會被先執行,而其執行出來的結果將作為外部的輸入資訊!例如 u...
shell學習筆記(一)
1.history 執行命令歷史紀錄 2.執行上一次命令3.n執行這條命令4.vim執行最近的乙個 vim 5.alias 可以簡單修改名字別名也就是把貓叫個咪 也可以比如 alias ls 6.ctrl z jobs,fg bg作業控制 7.mail s vayne 1219345363 qq.c...
shell學習筆記(一)
一.指令碼編寫和使用 1.sh指令碼宣告 bin sh 2.注釋寫法 該行都是 3.使指令碼可執行 chmod x filename 4.執行指令碼 在終端terminal中輸入.filename即可 二.變數的定義和使用 1.定義變數 變數名 屬性值 2.使用變數 變數名 大括號用來表示變數名的範...