除了 echo 命令,還可以使用如下兩種方法。
1.shell跟蹤選項
set命令執行之後的每一條命令以及加在命令列中的任何引數(包括變數和變數的值)都會顯示出來。"+"是跟蹤輸出的標誌,在子shell中執行的shell命令會加兩個"+"。
【例】
#!/bin/sh
#set -x
echo -n "can you write device drivers?"
read answer
answer=`echo $answer | tr [a-z] [a-z]`
if [ "$answer" = "y" ]
then
echo "wow, you must be very skilled"
else
echo "neither can i, i'm just an example shell script"
fi
說明:
1.read命令參考
2.echo $answer | tr [a-z] [a-z] 將變數answer中的小寫字母全部轉換成大寫字母
3.注意判斷式 if [ "$answer" = "y" ] 的比較操作符兩邊都要有空格
執行該檔案時,示例結果如下
$ ./example
can you write device drivers? y
wow, you must be very skilled
或者$ ./example
can you write device drivers? n
neither can i, im just an example shell script
如果"set -x"那一行沒有注釋掉,則執行結果如下所示:
$ ./example
+ echo -n 'can you write device drivers?'
can you write device drivers?+ read answer
y++ echo y
++ tr '[a-z]' '[a-z]'
+ answer=y
+ '[' y = y ']'
+ echo 'wow, you must be very skilled'
wow, you must be very skilled
或如下所示:
+ echo -n 'can you write device drivers?'
can you write device drivers?+ read answer
n++ echo n
++ tr '[a-z]' '[a-z]'
+ answer=n
+ '[' n = y ']'
+ echo 'neither can i, i'\''m just an example shell script'
neither can i, i'm just an example shell script
2.根據除錯層次控制輸出
在指令碼的開始部分設定乙個除錯變數。指令碼執行時測試該變數,然後根據變數的值決定是顯示還是禁止除錯指令。
# !/bin/sh
debug=1
test $debug -gt 0 && echo "debug is on"
echo -n "can you write device drivers?"
read answer
test $debug -gt 0 && echo "the answer is $answer"
answer=`echo $answer | tr [a-z] [a-z]`
if [ "$answer" = "y" ]
then
echo "wow, you must be very skilled"
test $debug -gt 0 && echo "the answer is $answer"
else
echo "neither can i, i'm just an example shell script"
test $debug -gt 0 && echo "the answer is $answer"
fi
說明:
test $debug -gt 0 && echo some_debug_output 只有test結果為真,測試條件邏輯與才會執行其它**
test $debug -gt 0 || echo some_debug_output 只有test結果為假,測試條件邏輯或才會執行其它**
LINUX SHELL 抓取錯誤日誌指令碼
任何程式執行起來免不了產生很多日誌,其中錯誤日誌需要最為關心的。在某些時候會將錯誤日誌和正常日誌分開,但我們的系統卻沒有這麼做。更麻煩的是,每個小時儲存乙個日誌檔案,所以每次為了查詢當天是否有錯誤資訊需要開啟n個檔案,而且不能用grep因為需要把整個堆疊抓取下來。本人對shell完全是初學,磕磕碰碰...
LINUXSHELL抓取錯誤日誌指令碼
任何程式執行起來免不了產生很多日誌,其中錯誤日誌需要最為關心的。在某些時候會將錯誤日誌和正常日誌分開,但我們的系統卻沒有這麼做。更麻煩的是,每個小時儲存乙個日誌檔案,所以每次為了查詢當天是否有錯誤資訊需要開啟n個檔案,而且不能用grep因為需要把整個堆疊抓取下來。本人對shell完全是初學,磕磕碰碰...
LINUXSHELL抓取錯誤日誌指令碼
任何程式執行起來免不了產生很多日誌,其中錯誤日誌需要最為關心的。在某些時候會將錯誤日誌和正常日誌分開,但我們的系統卻沒有這麼做。更麻煩的是,每個小時儲存乙個日誌檔案,所以每次為了查詢當天是否有錯誤資訊需要開啟n個檔案,而且不能用grep因為需要把整個堆疊抓取下來。本人對shell完全是初學,磕磕碰碰...