bash中的字串引用是一件很簡單的事情,我們大多數人對此看一眼就能明了,但是今天這個技巧,也許能夠幫你在未來節省不少時間。
引用符包括 「(雙引號)和 ' (單引號),最基本的用法就是引用字串。單引號同雙引號稍有不同,單引號不支援轉義,但是雙引號支援。例如:
a="hello \"the\" world" 輸出 hello "the" world
a='hello "the" world' 輸出 hello "the" world
a='hello \'the\' world' 輸出 報錯 unexpected eof while looking for matching 『
a="hello 'the' world" 輸出 hello 'the' world
b="the"
a='hello \"$b\" world' 輸出 hello \"$b\" world
a="hello \"$b\" world" 輸出 hello "the" world
ok,以上的這些使用都沒有問題,我們經常遇到問題的地方是在處理檔名中有空格的檔案時。例如:
#/bin/bash
for i in $(find .)
doecho $i
done
列印的結果是
../a.txt
./b.txt
./file
with
space.txt
./quote.sh
乙個解決辦法是,將原來的字段分隔符(nternal field separator )替換為換行,如下:
#/bin/bash
newline='
'oifs=$ifs
ifs=$newline
files=($(find .))
ifs=$oifs
for i in "$"
doecho $i
done
另外乙個問題。當我們需要訪問一些單詞的時候,如何避免被轉義字元所影響。例如:a="hello \"there big\" world"
#!/bin/bash
a="hello \"there big\" world"
for i in $a
doecho $i
done
程式的輸出和我們希望的不太一樣,解決的辦法是使用eval,如下:
#!/bin/bash
a="hello \"there big\" world"
eval set -- $a
for i in "$@"
doecho $i
done
看到這裡,我們在處理單引號、雙引號引用的時候,一般就不會出問題了。
bash中字串處理
得到長度 x abcd 方法一 expr length x 4 方法二 echo 4 方法三 expr x 4 expr 的幫助 string regexp anchored pattern match of regexp in string 查詢子串 expr index x b 2 expr i...
Bash中的字串擷取
1.按子串分割擷取 從左往右,刪除最短的乙個以string結尾的子串,即擷取第乙個string子串之後的字串 從左往右,刪除最長的乙個以string結尾的子串,即擷取最後乙個string子串之後的字串 從右往左,刪除最短的乙個以string開頭的子串,即擷取最後乙個string子串之前的字串 從右往...
Bash中的字串處理
一 字串的替換 1 說明一下,這個操作中除了第乙個引數是變數外其它兩個都是字元 還有一點就是這個操作並不是把 變數1 中的字元替換了,詳見例子 例 str1 abcabcabc123abc echo 這裡的abc和aaa都是字串,而str1是變數,並且這個操作過後str1裡的字串長度不會減少,只是產...