shell編程

需求

.sh文件添加默認參數,默認爲true

當參數爲true時執行操作;當參數爲false時不做處理。

涉及的知識點

參數的獲取

shell使用一種默認的獲取參數的方法:通過$n來獲取參數。其中n是一個數字,$1就代表第一個參數。

值得注意的是shell中將$0定義爲腳本名

比如:

#!/bin/bash

echo '腳本名是:'$0
echo '第一參數的名稱是:'$1

執行結果:

clipboard.png

同時,這種獲取參數的方式也使用於方法中獲取參數,也就是說獲取方法的第一個參數也是用$1這種方式。

if else語法

基本的語法跟我們已經學過的任何一門語言都差不多:

if [ xxx ]
then
    xxx
else
    xxx
fi

這裏比較要注意的就是,if的判斷條件由[]進行包圍,並且,兩個括號與條件之間,必須要有空格

另一個比較值得注意的就是,由於沒有用於包圍程序塊的{}來標示if語句的結束,所以就需要使用fi來表示if語句的結束。

設置默認值

shell中允許多種設置默認值的方式,這裏我只介紹我實現的一種:

var=${a:-b}

這種寫法的含義就是,當變量a的值爲null空串的時候,將b作爲他的值,及var=b

實現需求

基本的語法都介紹完了,下面就可以開始實現我們的需求了。

這裏還有一個需要注意的是,我們最後的實現會通過函數的調用的形式來實現,所以,中間還會涉及到向函數傳參的問題。

這裏我就給出在函數調用的前提下實現需求的例子。

#!/bin/bash

# 程序入口函數
main() {
    # 獲取傳入函數的第一個參數,默認爲true
    temp=${1:-true}
    
    if [ $temp = true ]
    then 
        echo '我在這裏做了一些事情!'
    fi
}

# 執行main函數,並將命令的第一個參數傳給方法
main $1

clipboard.png

可以看到我在這裏成功實現了我們想要的效果,但是還要一點問題。

雖然我們可以通過輸入參數使程序什麼也不做,但是也可以通過輸入一些其他字符達到效果。所以我們還要完善一下:

#!/bin/bash

# 程序入口函數
main() {
    temp=${1:-true}
    if [ $temp == true ]
    then 
        echo '我在這裏做了一些事情!'
    fi
}

# 執行main函數,並將命令的第一個參數傳給方法
if [[ ! -n $1 || $1 == true || $1 == false ]]
then
    main $1 
else
    echo '參數未知錯誤!'
fi

可以看到,我們在執行main函數之前對它加了一些限制。只有在沒有參數,或者參數爲truefalse的時候纔會執行函數。

clipboard.png

這裏要注意的一點就是,當在if語句中添加多個條件的時候,一組[]變成了兩組[[]]

總結

當我們接觸一門新的語言的時候,有一些是這門語言獨有的特性,而這些特性正是我們需要重點注意的地方。


相關參考:http://www.runoob.com/linux/l...

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