linux如何调试脚本文件目录,如何在Linux下调试Bash Shell脚本的方法
新手寫了一個 hello world 小腳本,如何能調試運行在 Linux 或者類 UNIX 的系統上的 bash shell 腳本呢?
這是 Linux / Unix 系統管理員或新用戶最常問的問題。shell 腳本調試可能是一項繁瑣的工作(不容易閱讀)。調試 shell 腳本有多種方法。
您需要傳遞-x或-v參數,以在 bash shell 中瀏覽每行代碼。
讓我們看看如何使用各種方法調試 Linux 和 UNIX 上運行的腳本。
-x 選項來調試腳本
用 -x 選項來運行腳本:
$ bash -x fcbu.com.sh
使用 set 內置命令
bash shell 提供調試選項,可以打開或關閉使用 set 命令:
set -x : 顯示命令及其執行時的參數。
set -v : 顯示 shell 輸入行作為它們讀取的
可以在 shell 腳本本身中使用上面的兩個命令:
#!/bin/bash
# turn on debug mode
set -x
for f in *
do
file $f
done
# turn OFF debug mode
set +x
ls
在腳本的起始位置可以用以下代碼調試:
#!/bin/bash -xv
使用bash智能調試功能
首先添加一個叫做 _DEBUG 的特殊變量。當你需要調試腳本的時候,設置 _DEBUG 為 on:
在腳本的開頭放置以下賦值和函數:
_DEBUG="on"
function DEBUG()
{
[ "$_DEBUG" == "on" ] &&? $@
}
現在,只要你需要調試,只需使用 DEBUG 函數如下:
DEBUG echo "File is $filename"
或者:
DEBUG set -x
Cmd1
Cmd2
DEBUG set +x
當調試完(在移動你的腳本到生產環境之前)設置 _DEBUG為off或非 'on' 的任何字符。不需要刪除調試行。
示例腳本:
#!/bin/bash
_DEBUG="on"
function DEBUG()
{
[ "$_DEBUG" == "on" ] &&? $@
}
DEBUG echo 'Reading files'
for i in *
do
grep 'something' $i > /dev/null
[ $? -eq 0 ] && echo "Found in $i file"
done
DEBUG set -x
a=2
b=3
c=$(( $a + $b ))
DEBUG set +x
echo "$a + $b = $c"
保存并關閉文件。運行腳本如下輸出:
Reading files
Found in xyz.txt file
+ a=2
+ b=3
+ c=5
+ DEBUG set +x
+ '[' on == on ']'
+ set +x
2 + 3 = 5
現在設置 _DEBUG 為 off(你需要編輯該文件):
_DEBUG="off"
運行腳本,輸出:
Found in xyz.txt file
2 + 3 = 5
以上是一個簡單但非常有效的技術。還可以嘗試使用 DEBUG 作為別名而不是函數。
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的linux如何调试脚本文件目录,如何在Linux下调试Bash Shell脚本的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新生周赛:小青的宿舍(C语言)
- 下一篇: java 校验护照_【示例教程】如何使用