1、 變量內容的刪除與替換
#代表由前面開始刪除,所以這里便由開始的/刪起,*來代替0到無窮多個任意字符
%由后面向前刪除變量內容
例如:echo ${path%:*bin}刪除最有一個目錄,即從:到bin為止的字符串並且是最短的
echo ${path/sbin/SBIN}:兩個斜線中間的是舊字符,后面的是新字符
變量設置方式 |
說明 |
${變量#關鍵字} |
若變量內容從頭開始的數據符合“關鍵字”,則將符合的最短數據刪除 |
${變量##關鍵字} |
若變量內容從頭開始的數據符合“關鍵字”,則將符合的最短數據刪除 |
${變量%關鍵字} |
若變量內容從尾向前的數據符合“關鍵字”,則將符合的最短數據刪除 |
${變量%%關鍵字} |
若變量內容從尾向前的數據符合“關鍵字”,則將符合的最長數據刪除 |
${變量/舊字符串/新字符串} |
若變量內容符合“舊字符串”,則第一個舊字符串會被新字符串替換 |
${變量//舊字符串/新字符串} |
若變量內容符合“舊字符串”,則全部的舊字符串會被新字符串替換 |
2、變量的測試與內容替換
變量設置方式 |
Str沒有設置 |
Str為空字符串 |
Str已設置非為空字符串 |
Var=${str-expr} |
Var=expr |
Var= |
Var=$str |
Var=${str:-expr} |
Var=expr |
Var=expr |
Var=$str |
Var=${str+expr} |
Var= |
Var=expr |
Var=expr |
Var=${str:+expr} |
Var= |
Var= |
Var=expr |
Var=${str=expr} |
Str=expr |
str不變 |
str不變 |
Var=${str:=expr} |
Str=expr |
Str=expr |
str不變 |
Var=${str?expr} |
expr輸出至stderr |
Var= |
Var=str |
Var=${str:?expr} |
expr輸出至stderr |
expr輸出至stderr |
Var=str |