1. 程式人生 > >Shell 腳本編程 基本語法:

Shell 腳本編程 基本語法:

名稱 ... /usr ase 失敗 htm 也有 第一個 編程

Shell 腳本編程語法:

註:
文章來源 http://www.cnblogs.com/yunquan/p/6821850.html
視頻來源:https://www.bilibili.com/video/av10565321/index_1.html?t=684


這裏每個語句都要有空格控制,不然語法錯誤

1.文件格式

以.sh後綴  
在文件裏,第一行寫環境變量  

#!/bin/bash
PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin ....
//保證在其他電腦,也能運行(這裏是配置環境)
export PATH
exit 0 (=C語言return 0,可以省略)跳出,不繼續向下執行

2.執行sh

1)bash .sh文件  
2)./.sh文件  
3)source   .sh文件

3.read

read -p(提示字符) "請輸入你的名字" name(變量)

echo "hello" $name

4.判斷式

** test命令:  
    -e  該【檔名】是否【存在】  (exist)?(常用)  
    -f  該【檔名】是否是【檔案】(file)?(常用)  
    -d  該【文件名】是否為【目錄】(directory)?(常用)**

    -r  偵測該檔名是否是具有【可讀】屬性?
    -w  偵測該檔名是否是具有【可寫】屬性?
    -x  偵測該檔名是否是具有【可執行】屬性?

    -eq 兩數相等(equal0)
    -ne 兩數值不相等(not equal)
    -gt n1 > n2 (greater than)
    -lt n1 < n2 (less than)
    -ge n1 >= n2(greater than or equal)
    -le n1 <= n2(less than or equal)

eg:

    #!/bin/bash  

    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
    export PATH
    read -p "請輸入(Y/N):" yn
    [ "$yn" == "Y" -o "$yn" == "y" ] && echo    "ok,continue" && exit 0
    [ "$yn" == "N" -o "$yn" == "n" ] && echo "oh,intsdsd" && exit 0
    echo "我不信這個也能出來" && exit 0

shell scripts的預設變數( $0 $1 $2)

這個理解起來很簡單,腳本名稱就是 $0 然後第一個參數就是 $1 第二個參數就是 $2 ...以此類推

好,我們來個簡單的例子

#!/bin/bash

echo "The scripts name is $0" 

$0是第一個參數,下面的 -n 參數是判空,是假的就不執行,是真的執行後面語句,最後exit

[ -n "$1" ] && echo "第一個參數是: $1" || exit 0
[ -n "$2" ] && echo "第二個參數是: $2" || exit 0

5.條件判斷式

if ...then

if [];then ......
elif [];then ......
else ...... 
fi(結束語)
exit 0

eg:

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
export PATH
read -p "請輸入(Y/N):"  yn
if [ "$yn" == "Y" -o "$yn" == "y" ];then
        echo "ok,continue"
elif [ "$yn" == "N" -o "$yn" == "n" ];then
        echo "oh,intsdsd" 
else
        echo "我不信這個也能出來" 
fi
exit 0  

case ...in ...esac

#!/bin/bash
case $1 in
    "hello")
            echo "hello,how are you"
            ;;
    "")
            echo "你必須輸入參數"
            ;;
    *)
            echo "要輸入hello啊"
            ;;
esac

function函數

#!/bin/bash


function h()
{
    echo "好帥啊 $1"    //function函數也有變量,$1就是函數的參數,這個和腳本的變量不同
}

case $1(腳本的第一個參數,從bash外面輸入的) in
        "one")
                h 1
                ;;
        "two")
                h 2
                ;;
        "three")
                h 3
                ;;
        *)
                echo "只能用123"
                ;;
    esac

LOOP

while do done

#!/bin/bash
read -p "請輸入一個數字:" number
i=0
s=0
while [ "$i" -lt  "$number" ]    //這裏的小於號是 -lt 註意!
do
i=$(($i+1))              //這裏為什麽要兩個()?因為()有運算的意思
s=$(($s+$i))              //這裏i和s這兩行不能有空格,否則失敗
done
echo -e "‘1+2+...+$number‘ 的結果是: $s "                             

6.shell script 的追蹤與debug

    -n  不執行script,僅查詢語法問題:  
-v  執行script前,先將script 的內容輸出到屏幕上  
-x  將使用到的script內容顯示到屏幕上,這是很有用的參數

Shell 腳本編程 基本語法: