假設我們定義了乙個變數為:
file=/dir1/dir2/dir3/my.file.txt
我們可以用$ 分別替換獲得不同的值
1. 截斷功能
$: 拿掉第一條/及其左邊的字串:dir1/dir2/dir3/my.file.txt
$: 拿掉最後一條/及其左邊的字串:my.file.txt
$: 拿掉第乙個.及其左邊的字串:file.txt
$: 拿掉最後乙個.及其左邊的字串:txt
$: 拿掉最後條/及其右邊的字串:/dir1/dir2/dir3
$: 拿掉第一條/及其右邊的字串:(空值)
$: 拿掉最後乙個.及其右邊的字串:/dir1/dir2/dir3/my.file
$: 拿掉第乙個.及其右邊的字串:/dir1/dir2/dir3/my
記憶的方法為:
# 是去掉左邊(在鑑盤上# 在$ 之左邊)
% 是去掉右邊(在鑑盤上% 在$ 之右邊)
單一符號是最小匹配﹔兩個符號是最大匹配。
2. 字串提取
單一符號是最小匹配﹔兩個符號是最大匹配。
$:提取最左邊的 5 個位元組:/dir1
$:提取第 5 個位元組右邊的連續 5 個位元組:/dir2
3. 字串替換
$:將第乙個 dir 提換為 path:/path1/dir2/dir3/my.file.txt
$:將全部 dir 提換為 path:/path1/path2/path3/my.file.txt
4. 針對不同的變數狀態賦值(沒設定、空值、非空值):
$: 若$file沒有設定,則使用my.file.txt作返回值。(空值及非空值時不作處理)
$:若$file沒有設定或為空值,則使用my.file.txt作返回值。(非空值時不作處理)
$: 若$file設為空值或非空值,均使用my.file.txt作返回值。(沒設定時不作處理)
$:若$file為非空值,則使用my.file.txt作返回值。(沒設定及空值時不作處理)
$: 若$file沒設定,則使用my.file.txt作返回值,同時將$file 賦值為 my.file.txt。(空值及非空值時不作處理)
$:若$file沒設定或為空值,則使用my.file.txt作返回值,同時將 $file 賦值為 my.file.txt。(非空值時不作處理)
$: 若$file沒設定,則將my.file.txt輸出至 stderr。(空值及非空值時不作處理)
$:若$file沒設定或為空值,則將my.file.txt輸出至stderr。(非空值時不作處理)
注意:
":+"的情況是不包含空值的.
":-", ":="等只要有號就是包含空值(null).
5. 變數的長度
$6. 陣列運算
a=(a b c def)
$ 或 $ 可得到 a b c def (全部組數)
$ 可得到 a (第乙個組數),$ 則為第二個組數...
$ 或 $ 可得到 4 (全部組數數量)
$ 可得到 1 (即第乙個組數(a)的長度),$ 可得到 3 (第四個組數(def)的長度)
Shell中 的妙用
假設我們定義了乙個變數為 file dir1 dir2 dir3 my.file.txt 我們可以用 分別替換獲得不同的值 拿掉第一條 及其左邊的字串 dir1 dir2 dir3 my.file.txt 拿掉最後一條 及其左邊的字串 my.file.txt 拿掉第乙個 及其左邊的字串 file.t...
shell中 的妙用
1.截斷功能 file dir1 dir2 dir3 my.file.txt 拿掉第一條 及其左邊的字串 dir2 dir3 my.file txt 拿掉最後一條 及其左邊的字串 my.file txt 拿掉第乙個.及其左邊的字串 file txt 拿掉最後乙個.及其左邊的字串 txt 拿掉最後條 ...
shell中 的妙用
為了完整起見,我這裡再用一些例子加以說明 的一些特異功能 假設我們定義了乙個變數為 file dir1 dir2 dir3 my.file.txt 1.截斷功能 拿掉第一條 及其左邊的字串 dir1 dir2 dir3 my.file.txt 拿掉最後一條 及其左邊的字串 my.file.txt 拿...