shell中${}的妙用 字符串替換

b=a/123/321;{a/123/321};將{a}裏的第一個123替換爲321
b=a//123/321;{a//123/321};將{a}裏的所有123替換爲321

  1. 截斷功能
    ${file#/}:       拿掉第一條/及其左邊的字符串:dir1/dir2/dir3/my.file.txt
    ${file##
    /}:    拿掉最後一條/及其左邊的字符串:my.file.txt
    ${file#.}:       拿掉第一個.及其左邊的字符串:file.txt
    ${file##
    .}:    拿掉最後一個.及其左邊的字符串:txt
    ${file%/}:     拿掉最後條/及其右邊的字符串:/dir1/dir2/dir3
    ${file%%/
    }: 拿掉第一條/及其右邊的字符串:(空值)
    ${file%.}:    拿掉最後一個.及其右邊的字符串:/dir1/dir2/dir3/my.file
    ${file%%.
    }: 拿掉第一個.及其右邊的字符串:/dir1/dir2/dir3/my
    記憶的方法爲:
    [list]#是去掉左邊, ##最後一個
          %是去掉右邊, %%第一個
  2. 字符串提取 
    單一符號是最小匹配﹔兩個符號是最大匹配。
    ${file:0:5}:提取最左邊的 5 個字節:/dir1
    ${file:5:5}:提取第 5 個字節右邊的連續 5 個字節:/dir2
  3. 字符串替換
    ${file/dir/path}:將第一個 dir 提換爲 path:/path1/dir2/dir3/my.file.txt
    ${file//dir/path}:將全部 dir 提換爲 path:/path1/path2/path3/my.file.txt
  4. 針對不同的變量狀態賦值(沒設定、空值、非空值):
    filemy.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作返回值。(沒設定時不作處理)
    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}:若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:{file:?my.file.txt}:若file沒設定或爲空值,則將my.file.txt輸出至STDERR。(非空值時不作處理)
    注意: 
    ":+"的情況是不包含空值的.
    “:-”, ":="等只要有號就是包含空值(null).
  5. 變量的長度
    ${#file}
  6. 數組運算
    A=(a b c def)
    ${A[@]} 或 ${A[]} 可得到 a b c def (全部組數)
    A[0]a(){A[0]} 可得到 a (第一個組數),{A[1]} 則爲第二個組數…
    ${#A[@]} 或 ${#A[
    ]} 可得到 4 (全部組數數量)
    KaTeX parse error: Expected '}', got '#' at position 2: {#̲A[0]} 可得到 1 (即第…{#A[3]} 可得到 3 (第四個組數(def)的長度)
    ————————————————
    版權聲明:本文爲CSDN博主「wyq645741608」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
    原文鏈接:https://blog.csdn.net/wyq645741608/article/details/84809658
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章