shell脚本调试中打开set选项
??? 我們?cè)谡{(diào)試shell腳本的時(shí)候,不可以避免的會(huì)遇到問(wèn)題,這個(gè)時(shí)候,假如我們可以跟蹤到腳本到底是哪里問(wèn)了問(wèn)題,是哪個(gè)變量出了問(wèn)題,這樣就對(duì)我們的調(diào)試是很有幫助的,這里介紹一個(gè)shell里面的跟蹤選項(xiàng)這里介紹的是set命令,假設(shè)在腳本里面加入set –x ,就能顯示腳本運(yùn)行是的冗余輸出,如果在腳本文件中加入了命令set –x ,那么在set命令之后執(zhí)行的每一條命令以及加載命令行中的任何參數(shù)都會(huì)顯示出來(lái),每一行都會(huì)加上加號(hào)(+),提示它是跟蹤輸出的標(biāo)識(shí),在子shell中執(zhí)行的shell跟蹤命令會(huì)加2個(gè)叫號(hào)(++)。
下面來(lái)看看演示腳本:
1: [root@centos6 shell]# cat set-x.sh 2: #!/bin/bash 3: #set -x 4: echo -n "Can you write device drivers?" 5: read answer 6: answer=$(echo $answer | tr [a-z] [A-Z]) 7: if [ $answer = Y ] 8: then 9: echo "Wow,you must be very skilled" 10: else 11: echo "Neither can I,I am just an example shell script" 12: fi 13: [root@centos6 shell]# sh set-x.sh 14: Can you write device drivers?y 15: Wow,you must be very skilled 16: [root@centos6 shell]# sh set-x.sh 17: Can you write device drivers?n 18: Neither can I,I am just an example shell script 19: [root@centos6 shell]#?
上面的腳本內(nèi)容里面,我吧set –x? 這一行注釋掉了,我們平時(shí)都是看到這種效果,下面我將把set –x 這個(gè)選項(xiàng)打開(kāi),來(lái)看看效果:
1: [root@centos6 shell]# sh set-x.sh 2: + echo -n 'Can you write device drivers?' 3: Can you write device drivers?+ read answer 4: y 5: ++ echo y 6: ++ tr '[a-z]' '[A-Z]' 7: + answer=Y 8: + '[' Y = Y ']' 9: + echo 'Wow,you must be very skilled' 10: Wow,you must be very skilled 11: [root@centos6 shell]# sh set-x.sh 12: + echo -n 'Can you write device drivers?' 13: Can you write device drivers?+ read answer 14: n 15: ++ echo n 16: ++ tr '[a-z]' '[A-Z]' 17: + answer=N 18: + '[' N = Y ']' 19: + echo 'Neither can I,I am just an example shell script' 20: Neither can I,I am just an example shell script 21: [root@centos6 shell]#?
?
?? 嘿嘿,看到了吧,每一行都顯示出來(lái),每一個(gè)參數(shù)的狀態(tài)和執(zhí)行到哪一步的值是多少,都可以看的很清楚了吧,我們可以很清楚的看到answer這個(gè)變量的每一步的狀態(tài)和值,如果感興趣,來(lái)試驗(yàn)下吧,這個(gè)選項(xiàng)
總結(jié)
以上是生活随笔為你收集整理的shell脚本调试中打开set选项的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 错误:”未能加载文件或程序集“Syste
- 下一篇: 毕业倒计时了