shell指令碼裡面一個很經典的調試方法(原創)

來源:互聯網
上載者:User

shell指令碼裡面一個很經典的調試方法
作者 餘超 email:yuchao86@gmail.com

shell指令碼的測試大家經常使用的方法就是使用echo出資料來看是否符合程式運算的值。
如果指令碼過大的,這使用定義的常量開關開控制echo的輸出。
這裡給大家介紹一個方法,
在指令碼裡面#!/usr/bin/sh後設定一行set -xv就可以直接進入偵錯模式了。
而且一目瞭然。
請看如下列子:
[yuchao@yuchao-Latitude-E5410 source]$ls
ada  gcc-4.4.1  hotspot  httpd-2.2.19  httpd-2.2.19.tar.gz  leveldb-read-only  mysql-5.1.7-beta  php-5.3.6  serial.tar.gz  yu  yuchao  yu.pl  yu.py  yu.rb
[yuchao@yuchao-Latitude-E5410 source]$cat yu
#!/bin/sh 
#yuchao1@staff.sina.com.cn
#set -xv
echo `ls  `

if [ $# != 1 ] ; then
echo "USAGE: $0 TABNAME"
echo " e.g.: $0 CDR_CALL_20040701"
exit 1;
fi

echo $0
echo $#

a="zzz"
if [ "$a" = "" ]
then
echo $a empty
else
echo $a no empty
fi
[yuchao@yuchao-Latitude-E5410 source]$sh yu sina
ada gcc-4.4.1 hotspot httpd-2.2.19 httpd-2.2.19.tar.gz leveldb-read-only mysql-5.1.7-beta php-5.3.6 serial.tar.gz yu yuchao yu.pl yu.py yu.rb
yu
1
zzz no empty
[yuchao@yuchao-Latitude-E5410 source]$vim yu
vim: /usr/lib/libxml2.so.2: no version information available (required by /usr/lib/libbonoboui-2.so.0)

[yuchao@yuchao-Latitude-E5410 source]$sh yu sina
echo `ls  `
+ ls
+ echo ada gcc-4.4.1 hotspot httpd-2.2.19 httpd-2.2.19.tar.gz leveldb-read-only mysql-5.1.7-beta php-5.3.6 serial.tar.gz yu yuchao yu.pl yu.py yu.rb
ada gcc-4.4.1 hotspot httpd-2.2.19 httpd-2.2.19.tar.gz leveldb-read-only mysql-5.1.7-beta php-5.3.6 serial.tar.gz yu yuchao yu.pl yu.py yu.rb

if [ $# != 1 ] ; then
echo "USAGE: $0 TABNAME"
echo " e.g.: $0 CDR_CALL_20040701"
exit 1;
fi
+ [ 1 != 1 ]

echo $0
+ echo yu
yu
echo $#
+ echo 1
1

a="zzz"
+ a=zzz
if [ "$a" = "" ]
then
echo $a empty
else
echo $a no empty
fi
+ [ zzz =  ]
+ echo zzz no empty
zzz no empty
[yuchao@yuchao-Latitude-E5410 source]$sh -xv yu sina
#!/bin/sh 
#yuchao1@staff.sina.com.cn
set -xv
+ set -xv
echo `ls  `
+ ls
+ echo ada gcc-4.4.1 hotspot httpd-2.2.19 httpd-2.2.19.tar.gz leveldb-read-only mysql-5.1.7-beta php-5.3.6 serial.tar.gz yu yuchao yu.pl yu.py yu.rb
ada gcc-4.4.1 hotspot httpd-2.2.19 httpd-2.2.19.tar.gz leveldb-read-only mysql-5.1.7-beta php-5.3.6 serial.tar.gz yu yuchao yu.pl yu.py yu.rb

if [ $# != 1 ] ; then
echo "USAGE: $0 TABNAME"
echo " e.g.: $0 CDR_CALL_20040701"
exit 1;
fi
+ [ 1 != 1 ]

echo $0
+ echo yu
yu
echo $#
+ echo 1
1

a="zzz"
+ a=zzz
if [ "$a" = "" ]
then
echo $a empty
else
echo $a no empty
fi
+ [ zzz =  ]
+ echo zzz no empty
zzz no empty

總結:
1,在程式指令碼裡面設定:set -xv
2.在命令列裡面加上 -xv參數也一樣可以調試。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.