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 腳本調試 內容請搜索三五互聯以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持三五互聯

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯官網:m.shinetop.cn

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » 詳解bash中的腳本調試機制

登錄

找回密碼

注冊

主站蜘蛛池模板: 日本一区二区不卡精品| 日韩午夜福利片段在线观看| 亚洲暴爽av人人爽日日碰| 国产一区| 久久综合色之久久综合色| 吉川爱美一区二区三区视频| 国产一区二区不卡视频在线| 中文字幕亚洲国产精品| 欧美高清freexxxx性| 18禁一区二区每日更新| 午夜av高清在线观看| 四虎影视库国产精品一区| 临猗县| 乱60一70归性欧老妇| 果冻传媒色av国产在线播放| 国产亚洲精品第一综合另类无码无遮挡又大又爽又黄的视频 | 精品国产一区二区三区av性色| 国产精品ⅴ无码大片在线看| 香港经典a毛片免费观看播放| 国产不卡免费一区二区| 999精品全免费观看视频| 欧美三级在线播放| 亚洲男女羞羞无遮挡久久丫| 亚亚洲视频一区二区三区| 99久久精品国产亚洲精品| 国产日韩一区二区四季| 九九热在线视频观看这里只有精品| 亚洲成人www| 欧美人与动牲交A免费观看| 五华县| 岛国岛国免费v片在线观看| 日本人妻巨大乳挤奶水免费 | 日夜啪啪一区二区三区| 国产超碰无码最新上传| 久久精品道一区二区三区| 日本一卡2卡3卡4卡无卡免费| 国产亚洲综合一区二区三区| 亚洲av成人无码精品电影在线| 精品久久人人做爽综合| 最近中文字幕完整版2019| 巫山县|