|
3-8-11 eval 指令
內建指令 eval 的功能是將引數(argument)讀入 C shell 中,然後在加以執行。在 C shell 程式設計運用上,比較常看見。讓我們先來看下面的情況:
在指令 6,設定變數 vcom 為 'ls -l ; date'。當我們用變數的形態來執行“$vocm”,卻發現有兩個錯誤訊息,告訴我們“; not found”及“date not found”。會造成這種錯誤的原因,是因為 C shell 對於這種變數的解析語法,無法辨視特殊符號所造成的。如上例的變數,符號“;”與指令 date 均 C shell 被誤解成是指令 ls -l 後得“檔案名稱”。所以才會有“not found”的訊息傳出。 內建指令 eval 便是用來應付這種情況。我們將上面的變數改用 eval 來執行:
由於指令 eval 將 $vcom 當成引數讀入再加以執行,所以“not found”的誤解情況便消失了。其實在作法上使用指令 eval 便相當於以下的用法:
如果你是在 C shell 程式設計裡運用的話,你也可應用以下的方式:
不過這些變通的方法都不如使用內建指令 eval 來的方便。另外在使用內建指令 eval 上也有相當多的技巧,讓我們來看一個變數互換的技巧:
在上例中,變數 a 的內容是“$b”,當我們以一般的 echo 指令執行時,我們發現僅是將變數的內容顯示螢幕罷了。但是,當我們以指令 eval 來執行該 echo 指令時,卻輸出變數 b 的內容。相信你已經知道要如何運用了吧! 對於這個內建指令,在這裡要告訴你一個比較不好的消息,就是如果你所使用的 UNIX 作業系統是 SUN OS 4.1.3 的話,它有存在不少 bug,使用上請多多小心。 |