最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux Shell腳本編程的注意事項

 更新時間:2014年03月03日 17:15:51   作者:  
這篇文章主要介紹了Linux下Shell腳本編程的一些注意事項,如編程風(fēng)格、命名風(fēng)格等,需要的朋友可以參考下

一、常用技巧

復(fù)制代碼 代碼如下:
ssh user@server bash < /path/to/local/script.sh
#ssh到遠程服務(wù)器執(zhí)行一個腳本,此命令可以避免將腳本上傳到遠程服務(wù)器

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

二.變量命名

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

復(fù)制代碼 代碼如下:
COUNT=
Sum=

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

#-------------------錯誤寫法-------------------
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聲明
復(fù)制代碼 代碼如下:

func_test_1()
{
local test=1
echo $test
}

5.變量合并
如果某些變量需要組合起來才有意義時,例如文件路徑等,請將組合起來的值賦予一個變量,這樣以后修改起來方便
復(fù)制代碼 代碼如下:

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.異常判斷,判斷變量名是否存在,對于輸入變量,還需要判斷變量名的合法性
復(fù)制代碼 代碼如下:

#-------------------錯誤寫法-------------------
rm -rf ${path}/*
#----------------------------------------------

 
#-------------------正確寫法-------------------
if [ -d "${path}" ]
then
rm -rf ${path}/*
fi
#----------------------------------------------

7.雙中括號的使用[[ ]]
shell的雙中括號有很多的作用
復(fù)制代碼 代碼如下:

#----------------------------------------------
正則匹配
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.第一行申明解析器

復(fù)制代碼 代碼如下:

#!/bin/bash

2.第二行導(dǎo)入環(huán)境變量
復(fù)制代碼 代碼如下:

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

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

4.條件語句和循環(huán)語句風(fēng)格統(tǒng)一
使用shell統(tǒng)一格式,而非;

復(fù)制代碼 代碼如下:

#-------------------錯誤寫法-------------------
if [[ ]] ;then
command1
fi
while [[ ]] ;do
command2
done
#----------------------------------------------

#-------------------正確寫法-------------------
if [[ ]]
then
command1
fi

while [[ ]]
do
command2
done
#----------------------------------------------

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

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

復(fù)制代碼 代碼如下:

#-------------------錯誤寫法-------------------
#將3賦值給變量load_limit
load_limit=3
#----------------------------------------------
大哥,您這是在逗我玩兒嗎?

#-------------------正確寫法-------------------
#定義系統(tǒng)負載閥值
load_limit=3
#----------------------------------------------

五.接口化編程

當(dāng)多個腳本需要協(xié)調(diào)工作時,應(yīng)該根據(jù)各自模塊的功能,定義相應(yīng)的接口
例如,多個腳本需要讀取同一個配置文件的配置,那么將這個需求形成一個獨立的腳本,各個腳本都來調(diào)用這個接口腳本
這樣在修改配置文件格式的時候,只要修改這個接口就行了

您可能感興趣的文章:

相關(guān)文章

  • shell中if條件判斷的實現(xiàn)

    shell中if條件判斷的實現(xiàn)

    本文主要介紹了shell中if條件判斷的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Linux中多命令執(zhí)行'';''和''&&''的區(qū)別解釋

    Linux中多命令執(zhí)行'';''和''&&''的區(qū)別解釋

    大家有沒有發(fā)現(xiàn)在 Linux 中經(jīng)常使用到一個命令,如 make && make install,這里也可以使用 make ; make install,那么在 Linux 中執(zhí)行命令 ; 和 && 有何區(qū)別?下面通過這篇文章來給大家詳細的介紹下面,有需要的朋友們可以參考借鑒。
    2016-12-12
  • linux shell查看當(dāng)前外網(wǎng)IP

    linux shell查看當(dāng)前外網(wǎng)IP

    這篇文章主要介紹了如何在LINUX操作系統(tǒng)下查看本地IP地址(在SHELL下)的相關(guān)資料,需要的朋友可以參考下
    2015-09-09
  • shell編程入門之正則表達式實例代碼

    shell編程入門之正則表達式實例代碼

    正則表達式又稱規(guī)則表達式,是對字符串操作的一種邏輯公式,下面這篇文章主要給大家介紹了關(guān)于shell編程入門之正則表達式的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • shell腳本實現(xiàn)mysql定時備份、刪除、恢復(fù)功能

    shell腳本實現(xiàn)mysql定時備份、刪除、恢復(fù)功能

    這篇文章主要介紹了shell腳本實現(xiàn)mysql定時備份、刪除、恢復(fù)功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • Linux shell中的printf的詳細用法

    Linux shell中的printf的詳細用法

    這篇文章主要介紹了Linux shell中的printf的詳細用法的相關(guān)資料,希望能通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Shell腳本學(xué)習(xí)指南之文本處理工具

    Shell腳本學(xué)習(xí)指南之文本處理工具

    Shell腳本學(xué)習(xí)指南之文本處理工具介紹,需要的朋友可以參考下
    2013-02-02
  • shell腳本5種執(zhí)行方式及腳本不同的執(zhí)行方法和區(qū)別詳解

    shell腳本5種執(zhí)行方式及腳本不同的執(zhí)行方法和區(qū)別詳解

    我們都知道bash?shell?腳本的方法有多種,下面這篇文章主要給大家介紹了關(guān)于shell腳本5種執(zhí)行方式及腳本不同的執(zhí)行方法和區(qū)別的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • shell結(jié)合expect寫的批量scp腳本工具

    shell結(jié)合expect寫的批量scp腳本工具

    expect用于自動化地執(zhí)行l(wèi)inux環(huán)境下的命令行交互任務(wù),例如scp、ssh之類需要用戶手動輸入密碼然后確認的任務(wù)。有了這個工具,定義在scp過程中可能遇到的情況,然后編寫相應(yīng)的處理語句,就可以自動地完成scp操作了
    2013-02-02
  • Linux命令提示符顯示格式的配置方法

    Linux命令提示符顯示格式的配置方法

    今天小編就為大家分享一篇Linux命令提示符顯示格式的配置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06

最新評論

平顺县| 中山市| 锡林浩特市| 商都县| 马山县| 安塞县| 嘉峪关市| 吉木萨尔县| 化德县| 红桥区| 和静县| 镇远县| 黄龙县| 临武县| 黑山县| 弥勒县| 象州县| 林甸县| 祁连县| 浦东新区| 龙胜| 衡东县| 东乌| 普定县| 丰县| 罗江县| 阿拉善左旗| 金塔县| 满洲里市| 汕尾市| 北安市| 乐业县| 阿瓦提县| 花垣县| 宜宾县| 家居| 缙云县| 错那县| 博客| 卓资县| 历史|