需求
爲.sh
文件添加默認參數,默認爲true
。
當參數爲true
時執行操作;當參數爲false
時不做處理。
涉及的知識點
參數的獲取
shell
使用一種默認的獲取參數的方法:通過$n
來獲取參數。其中n
是一個數字,$1
就代表第一個參數。
值得注意的是shell
中將$0
定義爲腳本名
。
比如:
#!/bin/bash
echo '腳本名是:'$0
echo '第一參數的名稱是:'$1
執行結果:
同時,這種獲取參數的方式也使用於方法中獲取參數,也就是說獲取方法的第一個參數也是用$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
可以看到我在這裏成功實現了我們想要的效果,但是還要一點問題。
雖然我們可以通過輸入參數使程序什麼也不做,但是也可以通過輸入一些其他字符達到效果。所以我們還要完善一下:
#!/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
函數之前對它加了一些限制。只有在沒有參數,或者參數爲true
和false
的時候纔會執行函數。
這裏要注意的一點就是,當在if語句
中添加多個條件的時候,一組[]
變成了兩組[[]]
。
總結
當我們接觸一門新的語言的時候,有一些是這門語言獨有的特性,而這些特性正是我們需要重點注意的地方。