如果$string 參數是"*"或" @ ", 那麼将會從$position位置開始提取 $length 個位置參數, 但是由于
可能沒有$length 個位置參數了, 那麼就有幾個位置參數就提取幾個位置參數.
expr substr $string $position $length
在$string 中從$position開始提取$length 長度的子串.
expr match "$string" '\($substring\)'
從$string 的開始位置提取$substring , $substring 是正規表達式.
expr "$string" : '\($substring\)'
expr match "$string" '.*\($substring\)'
從$string 的結尾提取$substring , $substring 是正規表達式.
expr "$string" : '.*\($substring\)'
另: 關于子串削除,分享一個小例子:
當你需要構造檔案名的時候, 這個操作就顯得特别有用.
# touch test{1..5}.tar test{1..5}.tar.gz
# ls
test1.tar test2.tar test3.tar test4.tar test5.tar test.sh
test1.tar.gz test2.tar.gz test3.tar.gz test4.tar.gz test5.tar.gz
# ./test.sh
remove test1.tar to new_1.tar
remove test2.tar to new_2.tar
remove test3.tar to new_3.tar
remove test4.tar to new_4.tar
remove test5.tar to new_5.tar
remove test1.tar.gz to new_6.tar.gz
remove test2.tar.gz to new_7.tar.gz
remove test3.tar.gz to new_8.tar.gz
remove test4.tar.gz to new_9.tar.gz
remove test5.tar.gz to new_10.tar.gz
#
[從書本上摘錄下來,對于字元串的處理,熟練運用了bash提供的這些操作,一般的應用還是都能處理好]
[“無他,唯手熟爾”]