国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Linux Shell腳本編程的注意事項

2024-06-28 13:27:38
字體:
來源:轉載
供稿:網友
linux Shell腳本編程的注意事項Linux下(Shell腳本 http://www.jbxue.com/jb/shell/)編程的一些注意事項,如編程風格、命名風格等。一、常用技巧ssh user@server bash < /path/to/local/script.sh#ssh到遠程服務器執行一個腳本,此命令可以避免將腳本上傳到遠程服務器ssh user@host cat /path/to/remotefile | diff /path/to/localfile -#比較遠程文件和本地文件的差異vim scp://username@host//path/to/somefile#vi一個遠程文件curl ifconfig.me#在內網下查看公網ipecho ${#a}#取變量字符個數FUNCNAME#函數名變量,打印該變量會輸出當前的函數名稱二.變量命名1.變量命名前后規則統一COUNT=Sum=2.避免無含義字符或數字,例如下面的18,誰知道代表什么含義呢#-------------------錯誤寫法-------------------if [[ $count -gt 18 ]]thencommmandfi#----------------------------------------------#-------------------正確寫法-------------------PRocess_Limit=18if [[ $count -gt ${Process_Limit} ]]thencommmandfi#----------------------------------------------3.全局變量在腳本初始化的時候定義,一般是一些配置參數, 盡量少的使用全局變量4.函數內的局部變量使用local聲明func_test_1(){local test=1echo $test}5.變量合并如果某些變量需要組合起來才有意義時,例如文件路徑等,請將組合起來的值賦予一個變量,這樣以后修改起來方便log_dir=/opt/loglog_name=website.log#-------------------錯誤寫法-------------------if [[ ! -f ${log_dir}/mam/${log_name} ]]thentouch ${log_dir}/mam/${log_name}fi#----------------------------------------------#-------------------正確寫法-------------------log_file=${log_dir}/${log_name}if [[ ! -f ${log_file} ]]thentouch ${log_file}fi#----------------------------------------------6.異常判斷,判斷變量名是否存在,對于輸入變量,還需要判斷變量名的合法性#-------------------錯誤寫法-------------------rm -rf ${path}/*#----------------------------------------------#-------------------正確寫法-------------------if [ -d "${path}" ]thenrm -rf ${path}/*fi#----------------------------------------------7.雙中括號的使用[[ ]]shell的雙中括號有很多的作用#----------------------------------------------正則匹配if [[ Yes =~ Y|y ]]thenecho matchedfi#----------------------------------------------#----------------------------------------------防止空變量,以下if判斷,如果使用[]則會報錯if [[ $aaa == 1 ]]thenecho matchedelseecho "no such variable"fi#----------------------------------------------8.使用ctrl+n補齊變量名如果變量名的命名比較長,手輸入容易出錯,復制又太麻煩,則可以使用ctrl+n補齊變量名操作可以避免手工輸入導致的變量名錯誤三.臨時文件盡量避免使用臨時文件如果需要使用臨時文件,請在文件名中加入腳本pid,并在腳本退出前清除臨時文件mktemp命令可以用來生成一個臨時文件 www.jbxue.comtmp_file_name=$(mktemp TMP.XXXXXX)該命令會生成一個文件名為TMP.XXXXXX(其中XXXXXX為6位隨機碼)的文件這樣做可以避免腳本并行時,臨時文件名的沖突四.代碼風格1.第一行申明解析器#!/bin/bash2.第二行導入環境變量. ~/.bash_profile (這個在cron腳本中尤其重要)3.查找腳本自身路徑很多腳本沒有定義起始目錄,這樣將導致腳本只能在當前目錄下執行4.條件語句和循環語句風格統一使用shell統一格式,而非;#-------------------錯誤寫法-------------------if [[ ]] ;thencommand1fiwhile [[ ]] ;docommand2done#----------------------------------------------#-------------------正確寫法-------------------if [[ ]]thencommand1fiwhile [[ ]]docommand2done#----------------------------------------------5.縮進,使用TAB或者空格,不要兩者混用想檢查一個技術人員是否經驗豐富,那么看看他的電子檔簡歷吧,是否TAB和空格混用了6.添加注釋沒有注釋的腳本,注定難以維護,當然,我們也應該避免一些毫無意義的注釋#-------------------錯誤寫法-------------------#將3賦值給變量load_limitload_limit=3#----------------------------------------------大哥,您這是在逗我玩兒嗎?#-------------------正確寫法-------------------#定義系統負載閥值load_limit=3#----------------------------------------------五.接口化編程當多個腳本需要協調工作時,應該根據各自模塊的功能,定義相應的接口例如,多個腳本需要讀取同一個配置文件的配置,那么將這個需求形成一個獨立的腳本,各個腳本都來調用這個接口腳本這樣在修改配置文件格式的時候,只要修改這個接口就行了
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玉环县| 方城县| 奉节县| 新宾| 永济市| 扎囊县| 临夏县| 余江县| 宁强县| 通化市| 雅江县| 铜梁县| 于田县| 绥芬河市| 瑞安市| 永嘉县| 无锡市| 徐州市| 蒲江县| 安达市| 迁西县| 黑河市| 霞浦县| 岚皋县| 德惠市| 连江县| 临邑县| 夹江县| 中西区| 苏尼特右旗| 呼伦贝尔市| 临泉县| 嘉黎县| 盐亭县| 集贤县| 噶尔县| 湾仔区| 无极县| 砀山县| 河间市| 兴化市|