---恢復內容開始---
一、字符串
字符串是shell編程中最常用最有用的數據類型(除了數字和字符串,也沒啥其它類型好用了),字符串可以用單引號,也可以用雙引號,也可以不用引號。單雙引號的區別跟PHP類似。
1、單引號
str='this is a string'
單引號字符串的限制:
- 單引號里的任何字符都會原樣輸出,單引號字符串中的變量是無效的;
- 單引號字串中不能出現單引號(對單引號使用轉義符后也不行)。
2、雙引號
- your_name='qinjx'
- str="Hello, I know your are \"$your_name\"! \n"
雙引號的優點:
- 雙引號里可以有變量
- 雙引號里可以出現轉義字符
轉義字符
|
意義
|
ASCII碼值(十進制)
|
\a
|
響鈴(BEL)
|
007
|
\b
|
退格(BS) ,將當前位置移到前一列
|
008
|
\f
|
換頁(FF),將當前位置移到下頁開頭
|
012
|
\n
|
換行(LF) ,將當前位置移到下一行開頭
|
010
|
\r
|
回車(CR) ,將當前位置移到本行開頭
|
013
|
\t
|
水平制表(HT) (跳到下一個TAB位置)
|
009
|
\v
|
垂直制表(VT)
|
011
|
\\
|
代表一個反斜線字符''\'
|
092
|
\'
|
代表一個單引號(撇號)字符
|
039
|
\"
|
代表一個雙引號字符
|
034
|
\? |
代表一個問號 |
063 |
\0
|
空字符(NULL)
|
000
|
\ooo
|
1到3位八進制數所代表的任意字符
|
三位八進制
|
\xhh
|
1到2位十六進制所代表的任意字符
|
二位十六進制
|
注意:區分,斜杠:"/" 與 反斜杠:"\" ,此處不可互換
其中、\n是換行的意思,如果編輯好代碼后,執行后,結果為:

發現的問題
若是直接在Linux中按行輸入 your_name="wangjing"
str="Hello,I know you are \"$your_name\"! \n"
echo $str后為:Hello,I know you are "your_name"! \n
這樣會輸出str整個字符串,\n並沒有起到換行的作用,若想在這種形勢下\n 正確換行則需要
echo -e $str
這樣輸出的結果就換行了
因為Linux本身不認識反斜杠,你得再輸出的時候告訴Linux你得反斜杠不是字符串,而是一個反斜杠

3、拼接字符串
- your_name="qinjx"
- greeting="hello, "$your_name" !"
- greeting_1="hello, ${your_name} !"
- echo $greeting $greeting_1
輸出結果為:
4、獲取字符串長度
- string="abcd"
- echo ${#string}
輸出的結果為“”
5、提取子字符串
- string="alibaba is a great company"
- echo ${string:1:4}
輸出結果為:
6、 查找子字符串
- string="alibaba is a great company"
- echo `expr index "$string" is`
結果:
解釋:指string 后面的字符串 is 或者 si ,任意一個字符(i 或者 s)第一次出現在句子中的位置,首先出現的是i ,所以不管是si 還是 is ,都是第三。
---恢復內容結束---