網路農夫 --  Home 網路農夫 --  Home
網路農夫 --  Home
wait.....

4-2-8 echo 與 verbose 指令顯示變數

使用語法 set echo
set verbose

這兩個變數上使用上非常相近,而且在使用及功能上也有互補的作用,所以我們放在一起為你介紹。設定 echo 變數的作用是將所“真正執行的指令”顯示出來。為何說是真正執行的指令呢?因為在 UNIX 作業系統中有一些“指令”,可能是經過 aliases 功能重新定義過了,所以執行的並不是原來的指令。如果你設定這個變數,你便能很清楚地看到“指令”所執行的內容了。

30 ~ % set echo
31 ~ % cd test
cd
set prompt = ! `dirs`%
dirs
32 ~/test % alias cd
alias cd
cd !*;set prompt = "! `dirs`% "

其實 C shell 本身也提供一個與此功能相同的選項,就是“-x”。當你下指令來產生一個 subshell 時,如果加上“-x”選項也能得到相同的結果。如下所示:

33 % csh -x
1 % cd /bin
cd /bin
set prompt = ! `dirs`%
dirs
2 /bin %

verbose 變數的作用與變數 echo 相近。 verbose 變數所處理的並不是指令,而是變數的顯示。如果指令中沒牽涉到變數的問題,它只會將所執行的指令原封不變地顯示在螢幕上。就算是有 aliases 的情況它也不會有任何的作用。

2 % set verbose
3 % cd /bin
cd /bin
4 bin %

但如果所執行的指令含有變數的話,它的處理情況就和設定echo的顯示有所不同了。讓我們看下面的例子:

1 % set vb = 'set echo variable'
2 % set echo
3 % echo $vb
echo set echo variable
set echo variable
4 %

以上是設定了變數 echo 時所產生的情況。請注意到指令 3 的輸出訊息的第一行,變數 vb 的內容已被帶入。接下來我們再來看設定 verbose 變數的情形:

1 % set vb = 'set verbose variable'
2 % set verbose
3 % echo $vb
echo $vb
set verbose variable
4 %

我們清楚地看到 $vb 的內容並沒有帶入變數中,依然保持了 echo 指令的字元模式“$vb”。這便是兩者之間的差異所在。其時設定 verbose 變數就相當於是 C shell 的“-x”選項。

 

這兩個變數的最常用在撰寫 C shell 文稿產生錯誤時,相互配合使用來 debug。一般在指令行模式下比較少有必要設定它。

 

版本:Beta-2001-05 -- 網路農夫