国产探花免费观看_亚洲丰满少妇自慰呻吟_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算法的大雜燴。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天峨县| 杭锦旗| 隆昌县| 女性| 惠来县| 临泽县| 文登市| 政和县| 石狮市| 班戈县| 澄迈县| 巴青县| 西昌市| 武定县| 和平区| 青岛市| 江西省| 西畴县| 紫阳县| 紫金县| 玉环县| 鹤岗市| 安康市| 津南区| 南安市| 张家界市| 南投县| 龙泉市| 南充市| 福泉市| 栾城县| 山阴县| 榆社县| 双柏县| 柘城县| 拜泉县| 天门市| 拉孜县| 屏南县| 金寨县| 嘉禾县|