日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
shell腳本的一些注意事項

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

創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務卓資,十余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:028-86922220

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

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

比較遠程文件和本地文件的差異

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

vi一個遠程文件

curl ifconfig.me

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

echo ${#a}

取變量字符個數(shù)

FUNCNAME

函數(shù)名變量,打印該變量會輸出當前的函數(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補齊變量名

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

  操作可以避免手工輸入導致的變量名錯誤

二.臨時文件

盡量避免使用臨時文件

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

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

tmp_file_name=$(mktemp TMP.XXXXXX)

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

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

三.代碼風格

1.第一行申明解析器

  #!/bin/bash

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

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

3.查找腳本自身路徑

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

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

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

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

  if ` ` ;then

    command1

  fi

  while ` ` ;do

    command2

  done

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

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

  if ` `

  then

    command1

  fi

  while ` `

  do

    command2

  done

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

5.縮進,使用TAB或者空格,不要兩者混用

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

6.添加注釋

  沒有注釋的腳本,注定難以維護,當然,我們也應該避免一些毫無意義的注釋

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

  #將3賦值給變量load_limit

  load_limit=3

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

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

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

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

  load_limit=3

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

四.接口化編程

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

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

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


文章名稱:shell腳本的一些注意事項
鏈接URL:http://www.dlmjj.cn/article/pjepso.html