Linux學習筆記(指令碼變數)

2021-07-03 23:03:50 字數 1354 閱讀 9547

作業系統 centos 6.5, 使用者root

前兩天看鳥哥的linux私房菜,到shell指令碼這一塊兒,發現以前的基礎真心沒打好,就標了個書籤,想寫個blog記下來,然後就沒然後了,忘了。

今天繼續看的時候,看到linux啟動流程,然後vi /etc/profile,其他的shell語句都能看懂,忽然發現了乙個語句 if [ 「

" != "

-」 ],頓時就懵了,啥意思? -#*i是個變數?就去網上查了,在貼吧裡看到有人提了一句:shell 指令碼變數替換,突然就想起來上面要寫的blog,內容就是這一方面的,到今天看見就忘了,無語,趕快記下來。

主題:變數內容的刪除、取代和替換

變數除了可以直接設定來修改原本的內容外,也可以對其進行微調來獲取想要的結果

刪除與取代

echo $path,結果:

/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin

如果想把path裡的第乙個路徑/usr/local/sbin:去掉,可以執行

,返回的結果  

/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin  

然後就引申出來了這樣的語法

,和上面一樣的結果.

但是如果你想

把path中間的子串/usr/local/bin去掉卻不能執行,會報錯,而

可以執行,但是結果卻是連同子串左面的內容也刪除了。

這樣的語法,代表從變數var內容的最前面開始向右刪除,僅刪除最短的那乙個,即

,只從path變數中刪除/usr/local/sbin:,

然後又有乙個

這樣的語法,代表從前面開始向右刪除,刪除最長的乙個,即

取代: 變數

/舊字元

串/新字

符串,若

變數內容

符合舊字

符串,則

第乙個舊

字串會

被新字元

串取代 ,若變數內容符合舊字串,則全部舊字串會被新字串取代

2.變數的測試

變數設定方式 str沒有設定 str為空字串 str已設定非空

var=$ var=expr var= var=$str

var=$ var=expr var=expr var=$str

var=$ var= var=expr var=expr

var=$ var= var= var=expr

var=$ expr輸出至stderr var= var=$str

var=$ expr輸出至stderr expr輸出至stderr var=$str

vim指令碼學習筆記1 變數

變數的種類 無 函式內 區域性於函式 否則 全域性 buffer variable b 區域性於當前緩衝區。window variable w 區域性於當前視窗。tabpage variable t 區域性於當前標籤頁。global variable g 全域性。local variable l 區...

Shell指令碼學習筆記 二 變數

變數與字串 bash shell沒有所謂的 資料形態 除非使用內建declare特別指定變數的型態。在bash shell中,只有一種資料型態 以字元組成的字串 不必經過事先宣告的程式想用就用 設定變數值之後,該變數值只在當前的shell環境中有效。變數名長度無限制,區分大小寫。設定變數的方法 變數...

Linux學習筆記 高階變數

高階變數分為三個主題,1 變數擴充套件,2 命令替換,3 算術擴充套件 1 變數擴充套件 變數擴充套件基本型 變數擴充套件是一種簡易的條件判斷,對不同的條件賦予變數不同的替換值 變數擴充套件是對基本型加上條件判斷,如若條件符合,則進行變數替換,不符合則進行另乙個操作。取消變數,則這個變數不存在或未定...