推薦 構建指令碼之shell編寫規範

2022-07-02 15:18:08 字數 1151 閱讀 8770

1.#!/usr/bin/env bash

指定指令碼使用的shell,比較靈活。

2.set -eux

當前shell的執行方式1

-e:指令碼執行非0則退出

-u:有不存在的變數則報錯

-x:除錯指令碼,詳細的日誌輸出,免得去echo

3.set -o pipefail

當前shell的執行方式2

表示管道中任何乙個命令失敗都退出指令碼

4.當前指令碼包含外部指令碼時(不會開啟子shell程序):

(1). filename

(2)source filename,使shell讀入指定的shell程式檔案並依次執行檔案中的所有語句

注:source 和 . 不開啟子shell,在當前shell中執行,設定的區域性變數在執行完命令後仍然有效。

注:bash 或 sh 或 shell script 執行時,起子shell,其繼承父shell的環境變數,子shelll的變數和父shell沒聯絡。

注:shell 的內件命令exec執行命令時,不啟用子shell程序,用被執行的命令列替換掉當前的shell程序。

例如在當前shell中執行 exec pwd 表示用pwd替換當前shell程序 ,即為執行完後會退出當前shell。

可以將exec命令放到乙個shell指令碼中,用主指令碼呼叫這個指令碼,呼叫處用bash  xx.sh(xx.sh為存放exec命令的指令碼),這樣會為xx.sh建立乙個子shell去執行,當執行exec後該子指令碼程序就被替換成相應的exec的命令。

5.查詢並刪除程序

ps -ef |grep 'mysql' |grep -v grep |awk '' |xargs kill -9

6.裡面如果有變數,給其使用雙引號

[-f $filename]改為[-f "$filename"]

7.變數

(1)環境變數大寫=>name

(2)自定義變數小寫=>name

(3)特殊變數,通過命令列傳遞引數進行計算,$0代表指令碼名字

(4)exec "$@" =>執行傳進來的所有引數,此命令會替代子she程序。

(5)if 

[$(ps -ef |grep -c "ssh")-gt 1];thenecho "true";fi =>$()和反引號用來引用命令,得到的是命令的執行結果

Shell Basic Shell指令碼編寫規範

shell指令碼需要有較高的實用性 可維護 可閱讀 方便他人閱讀,因而需要建立一定的規範來操作 dream361 master cat test2.sh bin bash 所使用的bash程式 date 20170330 建立日期 author created by dream361 作者 mail...

編寫Shell指令碼

獲取變數的方式 1 echo path 2 echo 3 echo path 引數的提取 引數的個數 n 第n個引數 0 當前指令碼名稱 取出所有引數 shift 引數左移 執行過程 2 編寫指令碼內容 單獨講解 3 新增執行許可權 chmod a x abc.sh 4 當前目錄執行 abc.sh ...

Shell 指令碼編寫

shell 指令碼與 windows dos 下的批處理相似,也就是用各類命令預先放入到乙個檔案中,方便一次性執行的乙個程式檔案,主要是方便管理員進行設定或者管理用的。但是它比 windows 下的批處理更強大,比用其他程式設計程式編輯的程式效率更高,它使用了 linux unix 下的命令。方法一...