shell入門筆記2:字串、數組、echo與printf

來源:互聯網
上載者:User

標籤:any   定義   多維陣列   style   不同   連續   second   opened   str   

說明:

本文是關於http://c.biancheng.net/cpp/shell/的相關筆記

 

shell字串

字串可以用單引號,也可以用雙引號,也可以不用引號。

 1 #!/bin/bash 2  3 ##字串 4  5 #不加引號: 6 #無法出現; 7 echo a 8 echo a;b 9 10 #單引號:11 #單引號裡的任何字元都會原樣輸出,單引號字串中的變數替換是無效的;12 #單引號字串中不能出現單引號(對單引號使用轉義符後也不行)。13 str=‘this is a string‘14 echo ${str}15 str_1=‘$str‘16 echo ${str_1}17 #str_2=‘\‘a‘18 #echo str_219 20 #雙引號:21 #雙引號裡可以有變數替換;22 #雙引號裡可以出現逸出字元。23 your_name=‘wuyifan‘24 str="Hello, I know that you are \"$your_name\"!"25 echo ${str}26 27 #拼接字串28 greeting="hello,"$your_name"!"29 greeting_1="hello,${your_name}!"30 echo $greeting"/"$greeting_131 32 #擷取字串長度33 string="abcd"34 echo ${#string}35 36 #提取子字串37 string="alibaba is a great company"38 echo ${string:1:4}39 40 #尋找子字串:41 #索引42 #expr index $string $substring43 #在字串$string中所匹配到的$substring的第1個字元第一次所出現的位置。44 echo `expr index "$string" is`45 echo `expr index "$string" at`
字串

 

shell數組

bash支援一維數組(不支援多維陣列),並且沒有限定數組的大小。

類似於C語言,數組元素的下標由0開始編號。擷取數組中的元素要利用下標,下標可以是整數或算術運算式,其值應大於或等於0。

 1 #!/bin/bash 2  3 ##定義數組 4  5 #()中以空格或者分行符號分隔 6 names=("ljq" "ymq" "lc") 7 names_1=( 8 "ljq" 9 "ymq"10 "lc"11 )12 #還可以單獨定義數組的各個分量13 names_2[0]="ljq"14 names_2[1]="ymq"15 names_2[2]="lc"16 #可以不使用連續的下標,而且下標的範圍沒有限制17 18 ##讀取數組19 echo "first name: ${names[0]}"20 echo "second name: ${names[1]}"21 echo "third name: ${names[2]}"22 #使用@或*可以擷取數組中的所有元素23 echo ${names_1[*]}24 echo ${names_2[@]}25 26 ##擷取數組的長度:與擷取字串的長度相同27 #擷取數組元素的個數28 echo ${#names[*]}29 echo ${#names[@]}30 #擷取數組單個元素的長度31 echo ${#names[2]}
數組

 

echo命令與printf命令

echo是Shell的一個內部指令,用於在螢幕上列印出指定的字串。

printf命令用于格式化輸出, 是echo命令的增強版。它是C語言printf()庫函數的一個有限的變形,並且在文法上有些不同。
註:

printf 不像 echo 那樣會自動換行,必須顯式添加分行符號(\n)。
printf 命令的文法:
printf  format-string  [arguments...]
format-string 為格式控制字元串,arguments 為參數列表。

這裡僅說明與C語言printf()函數的不同:
printf命令不用加括弧。
format-string可以沒有引號,但最好加上,單引號雙引號均可。
參數多于格式控制符(%)時,format-string可以重用,可以將所有參數都轉換。
arguments使用空格分隔,不用逗號。

 1 #!/bin/bash 2  3 #format-string為雙引號 4 printf "%d %s\n" 1 "abc" 5  6 #單引號與雙引號效果一樣  7 printf ‘%d %s\n‘ 1 "abc"  8  9 #沒有引號也可以輸出10 printf %s abcdef11 echo12 13 #格式只指定了一個參數,但多出的參數仍然會按照該格式輸出,format-string被重用14 printf %s abc def15 echo16 printf "%s\n" abc def17 printf "%s %s %s\n" a b c d e f g h i j18 19 #如果沒有arguments,那麼%s用NULL代替,%d用0代替20 printf "%s and %d \n" 21 22 #如果以%d的格式來顯示字串,那麼會有警告,提示無效的數字,此時預設置為023 printf "The first program always prints‘%s,%d\n‘" Hello Shell
echo與printf

shell入門筆記2:字串、數組、echo與printf

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.