一、Hello World
建立檔案test.sh
然後編輯代碼:
#!bin/bash/
echo “hello world !”
cd 到目标目錄下:
chmod +x ./test.sh #使腳本有執行權限
./test.sh #運作腳本
另一種運作方式:
sh test.sh
二、變量
變量名要求:
a)隻能是數字,字元,下劃線,并且首字母不能是數字
b)中間不能有空格,但是可以有下劃線
c)不能用關鍵詞
myshell="123456"
echo ${myshell}
echo $myshell
花括号加不加都行,加花括号隻是友善解釋器識别變量邊界。
另外變量和運算符之間不能有空格
隻讀變量
myshell="1234"
readonly myshell
隻讀變量意味着不能更改
删除變量
myshell="1234"
unset myshell
變量類型
局部變量:隻在shell中起作用,shell運作的時候其他指令不能調用它
環境變量:shell運作的時候,其他指令可以調用的
shell變量:是由shell程式設定的特殊變量,有局部變量也有環境變量,這些變量是保證shell的正常運作
單引号:
任何字元都會原樣輸出,單引号裡面的變量無效
單引号裡面不能出現單引号(轉義的也不行)
雙引号
雙引号裡可以有變量
雙引号裡可以出現轉義字元
#!/bin/bash
yourname='lihua'
myshell="Hello, I know you are "${yourname}"!"
echo ${myshell}
拼接字元
#!/bin/bash
yourname="lihua"
chat="Hello, "$yourname" !"
chat1="Hello, ${yourname} !"
echo ${chat} ${chat1}
擷取字元串長度
#!/bin/bash
myshell="123"
echo ${#myshell}
提取子串
#!/bin/bash
string="I'm AI"
echo ${string:1:2}
查找子串
#!/bin/bash
string="hello, AI"
echo `expr index "$string" h` #兩邊的不是單引号是Esc鍵下邊的那個符号,句式是固定的的
shell數組
shell隻支援一維數組
a)格式:
數組名=(val1 val2…) #用空格分離
value=(1 2 3 4)
随機通路下表:
value[1]=1
讀取數組:
${數組名[下标]}
讀取全部元素${數組名[@]}
擷取長度
# 取得數組元素的個數
length=${#數組名[@]}
# 或者
length=${#數組名[*]}
# 取得數組單個元素的長度
lengthn=${#數組名[n]}
shell傳遞參數
傳遞參數的格式,$n,$0表示執行檔案名,$1表示第一個參數,之後以此類推:
#!/bin/bash
echo "name:$0"
a=$1
b=$2
c=`expr ${a} + ${b}`
echo ${c}
$# 傳遞到腳本的參數個數
$* 以第一個單字元顯示所有腳本傳遞的參數。
$$ 腳本運作的目前程序ID号
$! 背景運作的最後一個程序的ID号
$@ 與$*相同,使用時加引号,是傳回每個參數
$- 顯示shell使用的目前選項,與set指令功能相同
$? 顯示最後指令的退出狀态。0表示沒有錯誤,其他任何值都表示有錯誤。