婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳解bash中的腳本調試機制

詳解bash中的腳本調試機制

熱門標簽:地圖標注能更改嗎 廈門防封電銷電話卡 云南電商智能外呼系統哪家好 宜賓銷售外呼系統軟件 高德地圖標注公司需要錢 地圖標注員有發展前景嗎 外呼系統全國 四川保險智能外呼系統 濰坊寒亭400電話辦理多少錢

以調試模式運行腳本

通過bash -x <script>的方式可以在調試模式下運行整個腳本, bash會在在運行前打印出了每一行命令, 而且每行前面用+號表明命令的嵌套層數.

> bash -x debug.sh 
+ echo 'First line'
First line # 輸出結果沒有加號
++ date # 先執行命令替換 兩個加號是因為該命令嵌套在echo中
+ echo 'Print datetime: Thu 26 Mar 2020 08:21:28 PM CST Done.'
Print datetime: Thu 26 Mar 2020 08:21:28 PM CST Done.

如果腳本比較復雜, 我們可以通過使用環境變量PS4配合調試用的內置變量用于輸出更加詳細的信息:

> export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
> bash -x debug.sh 
+debug.sh:3:: echo 'First line'
First line
++debug.sh:4:: date
+debug.sh:4:: echo 'Print datetime: Thu 26 Mar 2020 08:35:59 PM CST Done.'
Print datetime: Thu 26 Mar 2020 08:35:59 PM CST Done.

我們也可以使用trap的DEBUG關鍵字在解釋執行每一行腳本之前執行指定的命令或函數:

trap 'echo "VARIABLE-TRACE> \$variable = \"$variable\""' DEBUG
variable=29
let variable++
let variable*=5
exit 0

# 輸出如下
VARIABLE-TRACE> $variable = ""
VARIABLE-TRACE> $variable = "29"
VARIABLE-TRACE> $variable = "30"
VARIABLE-TRACE> $variable = "150"

還可以使用trap的ERR關鍵字用于在解釋出現錯誤時執行預設的操作, 例如打印出錯的命令:

trap 'echo $BASH_COMMAND' ERR

但鑒于使用trap進行調試的執行效率過低, 建議在較為復雜的腳本中直接使用調試選項或者使用bashdb等調試工具.

高級調試

查看函數調用信息

在函數中使用內置命令caller能夠把函數的調用信息輸出到stdout, 但要注意該命令必須在函數內部調用.

#!/usr/bin/bash

func1 () {
  for i in `seq 0 3`
  do
    echo -e "Level$i\t  `caller $i`"
  done
}

func2 () {
  func1
}

func3 () {
  func2
}

func3
caller 0 # 必須在函數中調用 否則無輸出
exit 0

運行該腳本可以得到以下輸出:

Level0      11 func2 call.sh  # func1 的直接調用者
Level1      15 func3 call.sh  # 一層間接調用
Level2      18 main call.sh   # 二層間接調用
Level3      # 無輸出 因為沒有第三層調用

局部調試

可以通過set命令構造局部調試塊,我們可以按照如下方式添加局部調試:

set -x
date
set +x
> bash script1.sh # 不需要添加調試參數
The script starts now.

+ date
Fri 28 Feb 2020 06:23:04 PM CST
+ set +x

This is a string: black
And this is a number: 9

調試參數表

短命令 長命令 效果
set -f set -o noglob 對文件名停用元字符匹配
set -v set -o verbose 打印輸入的命令
set -x set -o xtrace 命令行首打印+,執行出錯會打印詳細信息

調試用的參數可以在運行中動態疊加或刪除:

> set -v
> date
date 
Fri 28 Feb 2020 06:54:47 PM CST
> set -x      # 參數可以累加
date        # -v 的效果
+ date       # -x 的效果
Fri 28 Feb 2020 06:55:37 PM CST
> set +vx      # 取消參數
set +vx

通過使用-f選項可以顯著減少腳本中的轉義字符:

> ls ?
x86_64-pc-linux-gnu-library
> set -f      # 停用元字符匹配
> ls ?
ls: cannot access '?': No such file or directory
> touch ?
> ls ?
'?'
> rm ?
> set +f -x   # 選項 x 還可以用于顯示詳細錯誤信息
> aaa
+ aaa
+ '[' -x /usr/lib/command-not-found ']'
+ /usr/lib/command-not-found -- aaa

Command 'aaa' not found, did you mean:

 command 'aha' from deb aha (0.5-1)
 command 'jaaa' from deb jaaa (0.8.4-4)
 command 'aa' from deb astronomical-almanac (5.6-6)

Try: sudo apt install <deb name>

+ return 127

默認調試

也可以直接在腳本第一行添加參數讓腳本默認以調試模式啟動:

#!/bin/bash -xv

還可以在可能出錯的命令前用echo輸出調試信息:

echo "debug message: now attempting to start w command"; w # 用 ; 對要執行的命令排序
echo "Variable VARNAME is now set to $VARNAME."

設置選項輔助調試

為了方便調試,我們可以使用set命令對bash的選項進行設置:

> set -o # 查看所有選項的開關狀態
> set -o | grep xtrace
xtrace     off
> set -x # 等價于 set -o xtrace
> set -o | grep xtrace 
+ grep --color=auto xtrace
+ set -o
xtrace     on
> set +x # 等價于 set +o xtrace
+ set +x
> set -o | grep xtrace
xtrace     off

常用調試選項

引用為定義變量時報錯:

> unset $VAR;echo $VAR

> set -u # 等價于 set -o nounset
> echo $var
bash: var: unbound variable

為防止誤操作覆蓋文件中的數據, 設置禁止重定向到已經存在的文件:

> set -C # 等價于 set -o noclobber
> touch test
> date > test
bash: test: cannot overwrite existing file

設置不解析通配符:

> set -f # 等價于 set -o noglob
> touch *
> ll *
-rw-rw-r-- 1 remilia remilia 0 Mar 1 20:09 '*'

到此這篇關于詳解bash中的腳本調試機制的文章就介紹到這了,更多相關bash 腳本調試 內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

標簽:廊坊 德州 紅河 廣安 滁州 湛江 回訪 巴彥淖爾

巨人網絡通訊聲明:本文標題《詳解bash中的腳本調試機制》,本文關鍵詞  詳解,bash,中的,腳本,調試,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解bash中的腳本調試機制》相關的同類信息!
  • 本頁收集關于詳解bash中的腳本調試機制的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人av网站大全| 久久爱www久久做| 天堂影院一区二区| 欧美怡红院视频| 亚洲欧美成aⅴ人在线观看| va亚洲va日韩不卡在线观看| 中文字幕日韩欧美一区二区三区| 色综合欧美在线视频区| 成人av在线资源网站| 久久综合五月天婷婷伊人| 韩国一区二区三区| 亚洲国产高清不卡| 99精品欧美一区二区三区综合在线| 国产精品区一区二区三区| 国产成人av一区二区| 中文字幕av一区 二区| 成人免费va视频| 一区二区三区日韩欧美| 欧美剧情电影在线观看完整版免费励志电影| 亚洲欧洲日韩在线| 欧美日本一区二区| 精品一区二区三区免费毛片爱 | 久久婷婷国产综合国色天香 | 成人av在线电影| 综合婷婷亚洲小说| 欧美精品黑人性xxxx| 国产又黄又大久久| 国产精品对白交换视频| 欧美一区二区三区电影| 99久久伊人网影院| 日韩国产高清影视| 国产精品天天看| 4438x成人网最大色成网站| 国产专区综合网| 亚洲欧美视频在线观看| 精品日韩一区二区三区免费视频| 91色在线porny| 激情六月婷婷久久| 亚洲成av人片在线| 国产精品福利影院| 欧美不卡一区二区三区| 欧美在线不卡视频| 99久久99久久精品免费观看| 激情丁香综合五月| 肉色丝袜一区二区| 亚洲一区二区三区小说| 狠狠色狠狠色合久久伊人| 久久亚洲精品国产精品紫薇| 国产精品18久久久久久久久久久久| 欧美极品xxx| 日韩亚洲欧美在线| 日本久久电影网| 成人教育av在线| 国产黄人亚洲片| 极品少妇一区二区| 蜜桃视频第一区免费观看| 伊人夜夜躁av伊人久久| 欧美激情一区二区三区四区| 精品欧美黑人一区二区三区| 欧美酷刑日本凌虐凌虐| 欧美在线免费观看亚洲| 91无套直看片红桃| 成人黄色软件下载| 波多野结衣在线一区| 国产91精品一区二区麻豆亚洲| 久久国产成人午夜av影院| 麻豆精品视频在线观看| 日韩电影一区二区三区| 三级一区在线视频先锋| 免费观看在线综合| 看国产成人h片视频| 九九**精品视频免费播放| 老司机精品视频线观看86| 蜜乳av一区二区| 国产一区 二区 三区一级| 国产99久久久国产精品免费看 | 成人国产免费视频| 成人高清视频在线观看| 成人av网站在线观看| 91亚洲精品久久久蜜桃| 欧美色倩网站大全免费| 日韩欧美一级精品久久| 精品福利av导航| 国产亚洲一区二区三区四区| 国产精品传媒入口麻豆| 偷窥国产亚洲免费视频| 国产乱码精品一区二区三区av | 欧美区在线观看| 日韩亚洲欧美高清| 亚洲国产精品99久久久久久久久| 亚洲狠狠丁香婷婷综合久久久| 亚洲成人中文在线| 国产一区二区伦理片| 99re6这里只有精品视频在线观看| 欧洲人成人精品| www国产精品av| 亚洲视频小说图片| 日韩精品欧美成人高清一区二区| 另类小说视频一区二区| 91久久精品日日躁夜夜躁欧美| 91精品国产乱码久久蜜臀| 国产精品视频yy9299一区| 午夜精品一区在线观看| 国产99精品视频| 91精品免费在线观看| 日韩一区欧美一区| 激情欧美日韩一区二区| 欧美色视频在线观看| 国产精品二三区| 激情深爱一区二区| 制服丝袜国产精品| 一区二区三区欧美日| 国产91在线观看丝袜| 日韩欧美一级在线播放| 亚洲超丰满肉感bbw| 91在线精品一区二区| 欧美精品一区二区三区在线| 一区二区三区国产精华| 不卡高清视频专区| 国产农村妇女毛片精品久久麻豆 | 一区二区高清在线| 成人av在线一区二区| 久久综合久色欧美综合狠狠| 日日摸夜夜添夜夜添精品视频 | 3atv在线一区二区三区| 亚洲欧洲av色图| 国产成人丝袜美腿| 欧美大肚乱孕交hd孕妇| 亚洲愉拍自拍另类高清精品| 高清不卡在线观看| 国产日韩欧美制服另类| 国v精品久久久网| 久久久影视传媒| 国产精品自拍网站| 久久综合成人精品亚洲另类欧美| 乱一区二区av| 精品对白一区国产伦| 国产乱妇无码大片在线观看| 欧美大胆一级视频| 国产一区二区在线电影| 国产亚洲综合色| 国产精品资源在线观看| 国产精品乱码一区二区三区软件| 亚洲女同一区二区| 日韩二区三区四区| 色妹子一区二区| 亚洲欧美激情一区二区| 9色porny自拍视频一区二区| 国产午夜精品福利| 成人黄色一级视频| 亚洲乱码日产精品bd| 91国偷自产一区二区开放时间| 亚洲视频在线一区观看| 欧美中文字幕不卡| 日韩1区2区日韩1区2区| 欧美精品一区男女天堂| 国产69精品久久久久毛片| 亚洲靠逼com| 欧美精品在线一区二区| 狠狠色丁香九九婷婷综合五月| 国产视频一区在线观看| 91蝌蚪porny成人天涯| 天天av天天翘天天综合网| 欧美成人精精品一区二区频| 成人av在线播放网址| 久久影院电视剧免费观看| 久久福利视频一区二区| 精品福利二区三区| 成人免费观看男女羞羞视频| 亚洲欧美另类久久久精品2019| 色视频欧美一区二区三区| 午夜激情一区二区三区| 精品处破学生在线二十三| 白白色亚洲国产精品| 五月天精品一区二区三区| 欧美精品一区二区三区在线 | 日本乱人伦一区| 久久精品免费观看| 曰韩精品一区二区| 久久久久高清精品| 91精品办公室少妇高潮对白| 精品一二三四区| 欧美亚男人的天堂| 亚洲三级在线观看| 69堂国产成人免费视频| 国产精品一级片| 天天综合天天综合色| 亚洲国产高清在线观看视频| 欧美精品在线观看播放| av成人老司机| 国产高清久久久久| 日韩电影在线免费看| 最新日韩av在线| 久久人人爽爽爽人久久久| 欧美老肥妇做.爰bbww视频| 91原创在线视频| 成人一区二区三区在线观看| 美国毛片一区二区| 天堂久久一区二区三区| 一区二区三区日韩精品|