日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
對shell腳本進行“美化”

平常工作中,你是否感覺shell腳本只是命令的堆砌;很多時候只是為了實現(xiàn)功能而沒有好的組織結構;自己的腳本都不想再看一遍;哈哈,我這就教給shell的“葵花寶典“,自此讓你的shell腳本有python一樣的美感并且極易維護,真的是shell腳本寫到停不下來。

創(chuàng)新互聯(lián)建站是一家集網站建設,洪湖企業(yè)網站建設,洪湖品牌網站建設,網站定制,洪湖網站建設報價,網絡營銷,網絡優(yōu)化,洪湖網站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網站。

平常工作中,你是否感覺shell腳本只是命令的堆砌;很多時候只是為了實現(xiàn)功能而沒有好的組織結構;自己的腳本都不想再看一遍;哈哈,我這就教給shell的“葵花寶典“,自此讓你的shell腳本有python一樣的美感并且極易維護,真的是shell腳本寫到停不下來。

現(xiàn)以nginx控制腳本為例,看一下腳本的美容過程:

#!/bin/bash
# set命令的奇妙用途留在文章末尾
set -eu
# nginx重載配置文件
nginx -c /etc/nginx/nginx.conf -t
kill -HUP `ps auxf | grep -E "nginx:[[:space:]]+master"| awk '{print $2}'`

寶典秘籍之變量抽離

在腳本中,需要依賴外部的配置,比如配置文件位置,監(jiān)聽端口之類的可變參數(shù),編程時,需要將其抽離為變量,為了更好的引用與維護,省去了外部配置變化時,一個個修改帶來的麻煩。

#!/bin/bash
# set命令的奇妙用途留在文章末尾
set -eu
# nginx配置文件在不同環(huán)境中,位置可能不同,所以需要將其抽離成可配置變量,腳本來引用
NGINX_CONFIG_FILE=/etc/nginx/nginx.conf

# nginx重載配置文件
nginx -c $NGINX_CONFIG_FILE -t
kill -HUP `ps auxf | grep -E "nginx:[[:space:]]+master"| awk '{print $2}'`

寶典秘籍之變量抽離

在腳本中,需要依賴外部的配置,比如配置文件位置,監(jiān)聽端口之類的可變參數(shù),編程時,需要將其抽離為變量,為了更好的引用與維護,省去了外部配置變化時,一個個修改帶來的麻煩。

#!/bin/bash
# set命令的奇妙用途留在文章末尾
set -eu
# nginx配置文件在不同環(huán)境中,位置可能不同,所以需要將其抽離成可配置變量,腳本來引用
NGINX_CONFIG_FILE=/etc/nginx/nginx.conf

# nginx重載配置文件
nginx -c $NGINX_CONFIG_FILE -t
kill -HUP `ps auxf | grep -E "nginx:[[:space:]]+master"| awk '{print $2}'`

寶典秘籍之模塊化

運維畢竟不是專業(yè)程序員,寫腳本時是怎么舒服怎么來,簡單講就是從上到下依次執(zhí)行,這就導致復用性差,不易維護,解決這問題的關鍵在于函數(shù)化、模塊化思想,shell雖然是一種比較簡單的語言,但語言基本的邏輯控制、函數(shù)功能都有,這就讓我們編寫高質量shell腳本帶了無限可能。接下來就看一下具體例子來感受一下:

# 由于nginx配置文件檢查是執(zhí)行其他操作的第一步,所以我們將其獨立成一個單獨函數(shù)
#!/bin/bash
# set命令的奇妙用途留在文章末尾
set -eu
# nginx配置文件在不同環(huán)境中,位置可能不同,所以需要將其抽離成可配置變量,腳本來引用
NGINX_CONFIG_FILE=/etc/nginx/nginx.conf

# 抽離配置文件檢查為單獨的函數(shù)
config_test() {
   nginx -c $NGINX_CONFIG_FILE -t
}
get_nginx_master_pid(){
   echo `ps auxf | grep -E "nginx:[[:space:]]+master"| awk '{print $2}'`
}
# 抽離配置重載為獨立函數(shù)
reload() {
   kill -HUP `get_nginx_master_pid`
}

# nginx重載配置文件
config_test
reload

寶典秘籍之main函數(shù)

腳本的可維護性在于腳本的結構的好壞,為了擁有更好的結構,通常需要在腳本中定義入口函數(shù),即main函數(shù),讓我在維護腳本時,可以更好的把握腳本的組織架構,找到切入點:

# 由于nginx配置文件檢查是執(zhí)行其他操作的第一步,所以我們將其獨立成一個單獨函數(shù)
#!/bin/bash
# set命令的奇妙用途留在文章末尾
set -eu
# nginx配置文件在不同環(huán)境中,位置可能不同,所以需要將其抽離成可配置變量,腳本來引用
NGINX_CONFIG_FILE=/etc/nginx/nginx.conf

# 抽離配置文件為單獨的函數(shù)
config_test() {
   nginx -c $NGINX_CONFIG_FILE -t
}

get_nginx_master_pid(){
   echo `ps auxf | grep -E "nginx:[[:space:]]+master"| awk '{print $2}'`
}
# 抽離配置重載為獨立函數(shù)
reload() {
   kill -HUP `get_nginx_master_pid`
}

# 入口函數(shù)
main() {
   config_test
   reload
}

# main在此需要獲取腳本本身的參數(shù), 故將$@傳遞給main函數(shù)
main $@

寶典秘籍之函數(shù)返回值

在其他編程語言,可以通過return獲得函數(shù)的返回值,但是return語句在shell中含義不同,return命令會使一個函數(shù)返回,會返回一個單一的數(shù)字參數(shù),而這個數(shù)字參數(shù)在調用這個函數(shù)的腳本是可見的,如果沒有指定返回參數(shù),return在默認情況下會返回上一次命令的返回代碼。那如何實現(xiàn)類似其他編程語言的return效果呢?可以使用echo命令:

#!/bin/bash
set -eu
NGINX_CONFIG_FILE=/etc/nginx/nginx.conf

config_test() {
   nginx -c $NGINX_CONFIG_FILE -t
}

# 在此處直接把nginx的master pid可以通過反引號來獲取echo后的值
get_nginx_master_pid(){
   echo `ps auxf | grep -E "nginx:[[:space:]]+master"| awk '{print $2}'`
}

reload() {
   # `get_nginx_master_pid` 獲得nginx master pid
   kill -HUP `get_nginx_master_pid`
}

# 入口函數(shù)
main() {
   config_test
   reload
}

# main在此需要獲取腳本本身的參數(shù), 故將$@傳遞給main函數(shù)
main $@

寶典秘籍之set命令

bash內置的set命令,可以改變我們腳本的執(zhí)行行為,讓我對腳本的把握和調試更有力,下面說幾種常用的set指令,相信你都會喜歡的: set -e: bash腳本遇到錯誤立即退出 set -n: 檢查腳本語法但不執(zhí)行 set -u: 遇到未設置的變量立即退出 set -o pipefail: 控制在管道符執(zhí)行過程中有錯誤立即退出 set -x: 分步調試命令

在寫腳本時,我們可以直接在腳本開頭簡寫為如下格式:

#!/bin/bash
set -euxo pipefail

檢查bash腳本的語法時,可以這樣寫:

bash -n main.sh

當前題目:對shell腳本進行“美化”
文章路徑:http://m.5511xx.com/article/dhjjgpi.html