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/envbash
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 需求用命令實現 ...