Shell 數據類型及表達式


---恢復內容開始---

一、字符串

      字符串是shell編程中最常用最有用的數據類型(除了數字和字符串,也沒啥其它類型好用了),字符串可以用單引號,也可以用雙引號,也可以不用引號。單雙引號的區別跟PHP類似。

  1、單引號

     str='this is a string'

     單引號字符串的限制:

  • 單引號里的任何字符都會原樣輸出,單引號字符串中的變量是無效的;
  • 單引號字串中不能出現單引號(對單引號使用轉義符后也不行)。   

 2、雙引號

  1. your_name='qinjx'
  2. 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、拼接字符串
  1. your_name="qinjx"
  2. greeting="hello, "$your_name" !"
  3. greeting_1="hello, ${your_name} !"
  4. echo $greeting $greeting_1

輸出結果為:

 4、獲取字符串長度

  1. string="abcd"
  2. echo ${#string} 

輸出的結果為“”

 5、提取子字符串

  1. string="alibaba is a great company"
  2. echo ${string:1:4} 

輸出結果為:

 

6、 查找子字符串

  1. string="alibaba is a great company"
  2. echo `expr index "$string" is`

結果:

解釋:指string 后面的字符串 is 或者 si ,任意一個字符(i 或者 s)第一次出現在句子中的位置,首先出現的是i ,所以不管是si 還是 is  ,都是第三。

---恢復內容結束---


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM