Shell 簡介 Shell作為命令語言,它互動式地解釋和執行用戶輸入的命令;作為程式設計語言,它定義了各種變數和參數,並提供了許多在高級語言中才具有的控制結構,包括迴圈和分支。 常常作為批處理命令來使用,用來提高生產效率! 入門 下麵是Shell的一段簡單入門程式,我們在Linux上面使用 然後將 ...
Shell 簡介
Shell作為命令語言,它互動式地解釋和執行用戶輸入的命令;作為程式設計語言,它定義了各種變數和參數,並提供了許多在高級語言中才具有的控制結構,包括迴圈和分支。
常常作為批處理命令來使用,用來提高生產效率!
入門
下麵是Shell的一段簡單入門程式,我們在Linux上面使用vi test.sh
然後將下麵的代碼打進去,運行sh test.sh
即可
#!/bin/bash
echo "Hello World !"
上面這段程式是輸出HelloWorld,其中#!/bin/bash
指定編譯器,必須在腳本的第一行,echo
輸出信息,這裡為輸出Hello World
如何運行這段程式呢, 第一步首先進入到該腳本所在的目錄,比如cd /root/shelltest ,運行命令sh test.sh
這樣就可以進行輸入了。
程式中的變數
定義全局變數
全局變數一直存在,不會因為切換shell終端或者退出登錄而消失,全局變數需要在 /root/.bush_profile 、/etc/bashrc、/etc/profile、/etc/profile.d文件中設置,設置的格式為export name=value
在/etc/profile中定義完成後,需要重新載入配置文件 source /etc/profile
其中在/etc/profile.d設置shell腳本可以在啟動shelle客戶端的時候就執行這個腳本,這個文件夾中存儲的都為腳本。
創建腳本內容如下
則新打開客戶端的時候則會執行這個腳本,輸出對應的內容。
定義局部變數, 局部變數在退出Shell客戶端時會失效
單引號雙引號的區別
單引號:原樣輸出
雙引號:如果裡面有變數,會輸出變數
沒有引號:輸出變數
傳遞的參數
可以在調用腳本的時候給腳本傳遞參數,腳本內使用$1 $2 ...... 接受傳遞的參數,當參數超過9的時候,需要用花括弧括起來 ${10}
特殊的調用參數:
$0:返回Shell文件名稱
$$:當前腳本的PID
$#:傳遞的所有參數
$@:程式中的所有參數,這是將參數傳遞給其他程式的最佳方式。
$! :執行的上一個命令的PID
$?:上一次指令的返回值
$_:此命令前面的最後一個參數
$* :獲取所有的參數
不同腳本之間訪問變數
使用sh
命令啟動的腳本,則在腳本結束其內部的屬性都會消失,其他的腳本不能訪問其內部的屬性。
使用source
命令啟動腳本,則在腳本結束後其屬性不會失效,同時其他的腳本也能訪問到。
取消變數
使用unset
可以取消變數,這個變數包括環境變數和局部變數
數組
數組中可以存放多個值。Bash Shell 只支持一維數組(不支持多維數組),初始化時不需要定義數組大小(與 PHP 類似),數組下標從0開始。
定義數組
array=(value1 value2 value3)
array_name[0]=value0
讀取數組
${array_name[index]}
獲取數組中全部的元素
${my_array[@]}
獲取數組的長度
${#my_array[*]}
流程式控制制
if
如果else語句中沒有執行語句,不可以寫
if condition
then
command1
command2
...
commandN
fi
------------------
if condition
then
command1
command2
...
commandN
else
command
fi
------------
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
for
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
while
while condition
do
command
done
until
類似do-while迴圈,在最後判斷條件,最少執行一次
until condition
do
command
done
case
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
函數
demoFun(){ // 定義
echo "這是我的第一個 shell 函數!"
}
echo "-----函數開始執行-----"
demoFun // 調用,如果需要傳遞參數直接在後面跟就好 demoFun 1 2 3
echo "-----函數執行完畢-----"
運算符
expr 是一款表達式計算工具,使用它能完成表達式的求值操作。
expr 2 + 2
使用方法 , 需要註意的為1.表達式和運算符之間要有空格 2. 需要用``引起來
關係運算符
使用方法:
if [ $a -eq $b ]
then
echo "$a -eq $b : a 等於 b"
else
echo "$a -eq $b: a 不等於 b"
fi
布爾運算符
使用方法
if [ $a -lt 100 -a $b -gt 15 ]
then
echo "$a 小於 100 且 $b 大於 15 : 返回 true"
else
echo "$a 小於 100 且 $b 大於 15 : 返回 false"
fi