標籤:報錯 linu mod lin 定義變數 array roo 拼接字串 java
1.Shell簡介
Shell 是一個用 C 語言編寫的程式,它是使用者使用 Linux 的橋樑。Shell 既是一種命令語言,又是一種程式設計語言。Shell 是指一種應用程式,這個應用程式提供了一個介面,使用者通過這個介面訪問作業系統核心的服務。Shell 編程跟 java、php 編程一樣,只要有一個能編寫代碼的文字編輯器和一個能解釋執行的指令碼解譯器就可以了常見的有:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
執行shell指令碼兩種方法,一種是作為可執行程式執行,先要賦予執行許可權;另外一種是作為解譯器的參數執行;
chmod +x ./test.sh
./test.sh
/bin/sh test.sh
/bin/php test.php
2.shell的變數
定義變數
定義變數時直接給出,使用變數時用符號$;花括弧協助解譯器識別變數名稱的邊界;
your_name="runoob.com"
echo $your_name或者echo ${your_name}
唯讀變數
myUrl="http://www.w3cschool.cc"
readonly myUrl
myUrl="http://www.runoob.com" 更改變數會報錯
刪除變數
使用 unset 命令可以刪除變數。文法:
unset variable_name
3.shell字串
定義字串
字串是shell編程中最常用最有用的資料類型(除了數字和字串,也沒啥其它類型好用了),字串可以用單引號,也可以用雙引號,也可以不用引號。單雙引號的區別跟PHP類似。
your_name=‘qinjx‘
str="Hello, I know your are \"$your_name\"! \n"
單引號裡的任何字元都會原樣輸出,單引號字串中的變數是無效的;單引號字串中不能出現單引號(對單引號使用轉義符後也不行)。雙引號裡可以有變數
雙引號裡可以出現逸出字元
拼接字串
your_name="qinjx"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
擷取字串長度
string="abcd"
echo ${#string} #輸出 4
提取子字串
以下執行個體從字串第 2 個字元開始截取 4 個字元:
string="runoob is a great site"
echo ${string:1:4} # 輸出 unoo
尋找子字串
尋找字元 "i 或 s" 的位置:
string="runoob is a great company"
echo `expr index "$string" is` # 輸出 8
以上指令碼中 "`" 是反引號,而不是單引號 "‘",不要看錯了哦。
4.Shell 數組
bash支援一維數組(不支援多維陣列),並且沒有限定數組的大小。
類似與C語言,數組元素的下標由0開始編號。擷取數組中的元素要利用下標,下標可以是整數或算術運算式,其值應大於或等於0。
定義數組
在Shell中,用括弧來表示數組,數組元素用"空格"符號分割開。定義數組的一般形式為:
數組名=(值1 值2 ... 值n)
例如:
array_name=(value0 value1 value2 value3)
或者
array_name=(
value0
value1
value2
value3
)
還可以單獨定義數組的各個分量:
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
可以不使用連續的下標,而且下標的範圍沒有限制。
讀取數組
讀取數組元素值的一般格式是:
${數組名[下標]}
例如:
valuen=${array_name[n]}
使用@符號可以擷取數組中的所有元素,例如:
echo ${array_name[@]}
擷取數組的長度
擷取數組長度的方法與擷取字串長度的方法相同,例如:
# 取得數組元素的個數
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得數組單個元素的長度
lengthn=${#array_name[n]}
shell 之解譯器、變數、字串、數組