shell指令碼書寫規範

2022-09-01 19:36:14 字數 1868 閱讀 6492

n年後的第一更,這裡主要記錄一些平時自己不太注意的點

#!/usr/bin/env bash

2. 一行**太長,需要用 「\」 進行分行,看起來更美觀

./configure \

-prefix=/usr \

-sbin-path=/usr/sbin/nginx \

-conf-path=/etc/nginx/nginx.conf

3. 在指令碼中獲取外部命令返回值的正確方式:

num=$(wc -l filename.txt|awk '')

4. 在定義函式時,最好對函式的輸入輸出型別做注釋

<-()  # 輸入空,輸出空

[string]

<-(var1: string, var2: string) # 輸入兩個字元型變數,輸出字元型

[boolean]

<-(var1: string, var2: int) # 輸入字元型變數1,整型變數2,輸出布林值

<- (var1: string)

例如:#[string] <- (string)

test()

}

# 通常情況下用於外部呼叫

function

external()

# 通常情況下僅指令碼內使用

internal()

6. 在函式內部定義變數時,盡量使用local進行定義,限制變數作用範圍

func()

}

7. shell指令碼函式返回值只能是整數,string型別的返回值是會報錯的;

通常情況下整數推薦使用echo;boolean型別推薦使用return;

獲取函式返回值可以使用return或者在函式內用echo

func()

info=$(func)

echo

"this is from func $.

"

# 或者使用return返回,在獲取返回值時,只能用 $? 進行捕獲

func()

}func

echo "function return value is:" $?

8. shell函式呼叫

呼叫外部指令碼中的函式之前,需要先source一下指令碼,推薦使用相對路徑!(source指令碼時,會將指令碼中的全域性變數、函式載入到當前指令碼中)(外部呼叫的函式,在定義時最好使用function定義)

在指令碼內部執行外部指令碼: bash + 指令碼名稱

#!/usr/bin/env

bash

source ./../../baseshell/log/baselog.sh

function

f1()

function

main() 開始執行

" #呼叫 ./../../baseshell/log/baselog.sh 中的函式,需要先用source baselog.sh

f1 #在函式內部呼叫當前指令碼內的函式

log_success

"lineno:$ 結束執行

" #呼叫 ./../../baseshell/log/baselog.sh

中的函式

}main #在指令碼內部呼叫當前指令碼內的函式

bash changbaishanfetcher.

sh#執行其他指令碼

bash changbaishanfetcher.

sh main #執行其他指令碼的main方法,前提是 changbaishanfetcher.sh 指令碼 支援按函式名呼叫

9. 會使用shellcheck對**進行檢查

ETL 指令碼書寫規範

2014 11 24 1.前言 為了統一軟體開發過程中關於sql structured query language 編碼的格式,使編碼人員編寫sql 遵從特定的風格,並養成良好的開發習慣,從而增強 的可讀性,便於交流和維護,特此收集。1.1邊界定義 規範主要應用於teradata sql 的dml...

Shell指令碼書寫總結

指令碼開頭必須有 bin sh 指令碼結束後用 chmod x filename 修改指令碼使用許可權 變數定義 變數名 值 在變數名之前加乙個 就可以取出變數值 bin sh 對變數賦值 a hello world 列印變數a的值 echo a is a num 2 echo this is th...

shell指令碼書寫書寫的思路流程

指令碼書寫的思路流程 boss的需求 系統安裝好之後,能夠有乙個良好的實驗環境。工作人員自己的需求 寫乙個系統初始化指令碼1 整理需求。例如 自動初始化指令碼 1 將ip位址配置為 dhcp 2 將yum源配置好 3 將防火牆關閉 4 將 selinux 關閉 5 光碟自動掛載 2 需求用命令實現 ...