bash中的字串引用

2022-02-12 23:26:34 字數 1450 閱讀 1872

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裡的字串長度不會減少,只是產...