shell腳本的一些注意事項-創(chuàng)新互聯(lián)

ssh user@server bash < /path/to/local/script.sh

為卡若等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及卡若網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)、卡若網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

ssh到遠(yuǎn)程服務(wù)器執(zhí)行一個腳本,此命令可以避免將腳本上傳到遠(yuǎn)程服務(wù)器

ssh user@host cat /path/to/remotefile | diff /path/to/localfile -

比較遠(yuǎn)程文件和本地文件的差異

vim scp://username@host//path/to/somefile

vi一個遠(yuǎn)程文件

curl ifconfig.me

在內(nèi)網(wǎng)下查看公網(wǎng)ip

echo ${#a}

取變量字符個數(shù)

FUNCNAME

函數(shù)名變量,打印該變量會輸出當(dāng)前的函數(shù)名稱

一.變量命名

1.變量命名前后規(guī)則統(tǒng)一

COUNT=

Sum=

2.避免無含義字符或數(shù)字,例如下面的18,誰知道代表什么含義呢

-------------------錯誤寫法-------------------

if [[ $count -gt 18 ]]

then

  commmand

fi

----------------------------------------------

-------------------正確寫法-------------------

Process_Limit=18

if [[ $count -gt ${Process_Limit} ]]

then

  commmand

fi

----------------------------------------------

3.全局變量在腳本初始化的時候定義,一般是一些配置參數(shù), 盡量少的使用全局變量

4.函數(shù)內(nèi)的局部變量使用local聲明

func_test_1()

{

local test=1

echo $test

}

5.變量合并

如果某些變量需要組合起來才有意義時,例如文件路徑等,請將組合起來的值賦予一個變量,這樣以后修改起來方便

log_dir=/opt/log

log_name=website.log

-------------------錯誤寫法-------------------

if [[ ! -f ${log_dir}/mam/${log_name} ]]

then

  touch ${log_dir}/mam/${log_name}

fi

----------------------------------------------

-------------------正確寫法-------------------

log_file=${log_dir}/${log_name}

if [[ ! -f ${log_file} ]]

then

  touch ${log_file}

fi

----------------------------------------------

6.異常判斷,判斷變量名是否存在,對于輸入變量,還需要判斷變量名的合法性

-------------------錯誤寫法-------------------

rm -rf ${path}/*

----------------------------------------------

-------------------正確寫法-------------------

if [ -d "${path}" ]

then

  rm -rf ${path}/*

fi

----------------------------------------------

7.雙中括號的使用` `

shell的雙中括號有很多的作用

----------------------------------------------

正則匹配

if [[ Yes =~ Y|y ]]

then

  echo matched

fi

----------------------------------------------

----------------------------------------------

防止空變量,以下if判斷,如果使用[]則會報錯

if [[ $aaa == 1 ]]

then

  echo matched

else

  echo "no such variable"

fi

----------------------------------------------

8.使用ctrl+n補齊變量名

如果變量名的命名比較長,手輸入容易出錯,復(fù)制又太麻煩,則可以使用ctrl+n補齊變量名

操作可以避免手工輸入導(dǎo)致的變量名錯誤

二.臨時文件

盡量避免使用臨時文件

如果需要使用臨時文件,請在文件名中加入腳本pid,并在腳本退出前清除臨時文件

mktemp命令可以用來生成一個臨時文件

tmp_file_name=$(mktemp TMP.XXXXXX)

該命令會生成一個文件名為TMP.XXXXXX(其中XXXXXX為6位隨機碼)的文件

這樣做可以避免腳本并行時,臨時文件名的沖突

三.代碼風(fēng)格

1.第一行申明解析器

#!/bin/bash

2.第二行導(dǎo)入環(huán)境變量

. ~/.bash_profile (這個在cron腳本中尤其重要)

3.查找腳本自身路徑

很多腳本沒有定義起始目錄,這樣將導(dǎo)致腳本只能在當(dāng)前目錄下執(zhí)行

4.條件語句和循環(huán)語句風(fēng)格統(tǒng)一

使用shell統(tǒng)一格式,而非;

-------------------錯誤寫法-------------------

if ` ` ;then

  command1

fi

while ` ` ;do

  command2

done

----------------------------------------------

-------------------正確寫法-------------------

if ` `

then

  command1

fi

while ` `

do

  command2

done

----------------------------------------------

5.縮進(jìn),使用TAB或者空格,不要兩者混用

想檢查一個技術(shù)人員是否經(jīng)驗豐富,那么看看他的電子檔簡歷吧,是否TAB和空格混用了

6.添加注釋

沒有注釋的腳本,注定難以維護(hù),當(dāng)然,我們也應(yīng)該避免一些毫無意義的注釋

-------------------錯誤寫法-------------------

#將3賦值給變量load_limit

load_limit=3

----------------------------------------------

大哥,您這是在逗我玩兒嗎?

-------------------正確寫法-------------------

#定義系統(tǒng)負(fù)載閥值

load_limit=3

----------------------------------------------

四.接口化編程

當(dāng)多個腳本需要協(xié)調(diào)工作時,應(yīng)該根據(jù)各自模塊的功能,定義相應(yīng)的接口

例如,多個腳本需要讀取同一個配置文件的配置,那么將這個需求形成一個獨立的腳本,各個腳本都來調(diào)用這個接口腳本

這樣在修改配置文件格式的時候,只要修改這個接口就行了

名稱欄目:shell腳本的一些注意事項-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://www.muchs.cn/article46/piehg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、品牌網(wǎng)站建設(shè)外貿(mào)建站、定制網(wǎng)站網(wǎng)站設(shè)計公司、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)