国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

讓代碼整潔、過程清晰的BASH Shell編程技巧

2019-10-26 18:41:33
字體:
來源:轉載
供稿:網友

這是我寫BASH程序的招式。這里本沒有什么新的內容,但是從我的經驗來看,人們愛濫用BASH。他們忽略了計算機科學,而從他們的程序中創造的是“大泥球”(譯注:指架構不清晰的軟件系統)。

在此我告訴你方法,以保護你的程序免于障礙,并保持代碼的整潔。

一、不可改變的全局變量

1.盡量少用全局變量
2.以大寫命名
3.只讀聲明
4.用全局變量來代替隱晦的$0,$1等

在我的程序中常使用的全局變量:

代碼如下:
readonly PROGNAME=$(basename $0)
readonly PROGDIR=$(readlink -m $(dirname $0))
readonly ARGS="$@"

二、一切皆是局部的

所有變量都應為局部的。
代碼如下:
change_owner_of_file() {
    local filename=$1
    local user=$2
    local group=$3

    chown $user:$group $filename
}
change_owner_of_files() {
    local user=$1; shift
    local group=$1; shift
    local files=$@
    local i

    for i in $files
    do
        chown $user:$group $i
    done
}

1.自注釋(self documenting)的參數
2.通常作為循環用的變量i,把它聲明為局部變量是很重要的。
3.局部變量不作用于全局域。

代碼如下:
kfir@goofy ~ $ local a
bash: local: can only be used in a function

三、main()

1.有助于保持所有變量的局部性
2.直觀的函數式編程
3.代碼中唯一的全局命令是:main
代碼如下:
main() {
    local files="/tmp/a /tmp/b"
    local i

    for i in $files
    do
        change_owner_of_file kfir users $i
    done
}
main

四、一切皆是函數

唯一全局性運行的代碼是:
- 不可變的全局變量聲明
- main()函數

1.保持代碼整潔
2.過程變得清晰

代碼如下:
main() {
    local files=$(ls /tmp | grep pid | grep -v daemon)
}

代碼如下:
temporary_files() {
    local dir=$1

    ls $dir /
        | grep pid /
        | grep -v daemon
}

main() {
    local files=$(temporary_files /tmp)
}

1.第二個例子好得多。查找文件是temporary_files()的問題而非main()的。這段代碼用temporary_files()的單元測試也是可測試的。

2.如果你一定要嘗試第一個例子,你會得到查找臨時文件以和main算法的大雜燴。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 景泰县| 桐梓县| 普定县| 河西区| 龙山县| 招远市| 同心县| 会昌县| 资中县| 三都| 霞浦县| 安阳市| 津市市| 夹江县| 新野县| 浮梁县| 静海县| 镇雄县| 长丰县| 九台市| 资中县| 阿拉善左旗| 潮安县| 安义县| 乐业县| 成都市| 曲阳县| 明水县| 湖北省| 大方县| 濮阳县| 宜城市| 文安县| 民乐县| 杭锦旗| 渑池县| 屯昌县| 甘谷县| 轮台县| 铁岭市| 灵丘县|