Shell 學習筆記一(基本語法)

         Shell腳本和編程語言很相似,也有變量和流程控制語句,但Shell腳本是解釋執行的,不需要編譯,Shell程序從腳本中一行一行讀取並執行這些命令,相當於一個用戶把腳本中的命令一行一行敲到Shell提示符下執行。

         Shell初學者請注意,在平常應用中,建議您不要用 root 帳號運行 Shell 。作爲普通用戶,不管您有意還是無意,都無法破壞系統;但如果是 root,那就不同了,只要敲幾個字母,就可能導致災難性後果。

變量賦值與引用:

變量名=值 

要取用一個變量的值,只需在變量名前面加一個$( 注意: 給變量賦值的時候,不能在"="兩邊留空格 )

Shell編程中,使用變量無需事先聲明,同時變量名的命名須遵循如下規則:

  1. 首個字符必須爲字母(a-z,A-Z) 或者_
  2. 中間不能有空格,可以使用下劃線(_)
  3. 不能使用其他標點符號
輸出第一個hello word!

#!/bin/bash
a="hello word";
echo "${a}s";


有時候變量名可能會和其它文字混淆,比如:

num=2
echo "this is the $numnd"
上述腳本並不會輸出"this is the 2nd"而是"this is the ";這是由於shell會去搜索變量numnd的值,而實際上這個變量此時並沒有值。這時,我們可以用花括號來告訴shell要打印的是num變量:

num=2
echo "this is the ${num}nd"

已定義的變量,可以被重新定義,如:

your_name="tom"
echo $your_name

your_name="alibaba"
echo $your_name

這樣寫是合法的,但注意,第二次賦值的時候不能寫$your_name="alibaba",使用變量的時候才加美元符($)。


Shell 註釋

以“#”開頭的行就是註釋,會被解釋器忽略。shell裏沒有多行註釋,只能每一行加一個#號

如果在開發過程中,遇到大段的代碼需要臨時註釋起來,過一會兒又取消註釋,怎麼辦呢?每一行加個#符號太費力了,可以把這一段要註釋的代碼用一對花括號括起來,定義成一個函數,沒有地方調用這個函數,這塊代碼就不會執行,達到了和註釋一樣的效果。


Shell字符串

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

單引號:

str = 'this is string

單引號字符串的限制:

  • 單引號裏的任何字符都會原樣輸出,單引號字符串中的變量是無效的;
  • 單引號字串中不能出現單引號(對單引號使用轉義符後也不行)。
雙引號:
name='rockie bob'

echo "Hello ,I know your name \"$name\""

雙引號的優點:
  • 雙引號裏可以有變量
  • 雙引號裏可以出現轉義字符

拼接字符串:

str1='hello'
str2='word'

echo $str1 $str2 I\'m bob

獲取字符串長度:

string='abcd'
echo ${#string} #輸出 4

提取字符串:

string="alibaba is a great company"
echo ${string:1:4} #輸出liba

查找字符串:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章