的內部處理其實,我完全理解了$ *和$ @的用法。
例如,如果我使用運行該腳本:my_script *
然後,在$ @ ONE_FILE將真正得到每個文件到ONE_FILE進行處理。
即使文件名中有空格,ONE_FILE也會得到正確的文件名。
但是,如果使用$ *中的ONE_FILE,則故事是不同的。
我想你們明白我們之間的差異,我不需要走得更遠。
現在,我感興趣的是如何。
KornShell(ksh)如何解釋my_scrpt *
,然後將文件名正確傳遞到$ @
並將文件名傳遞到$ *。
例如,當看到KSH * my_script
,不是把文件名逐個成陣列,
然後把數組[1] [2] [3] ...到$ @處理?
而且,當看到$ *時,它只是concat
filename1 +空格+文件名2 +空格+ ...?
我知道這可能與ksh的內部編碼更相關。
任何見解?
+1。順便說一句,你的演示在ksh93中的作用是一樣的(可能也是ksh88)。 – 2010-12-20 19:01:15
謝謝勞倫斯!這聽起來很有趣。你能指導我一些網站,以便我可以深入研究這個主題嗎? – 2010-12-23 15:23:57
謝謝勞倫斯!這聽起來很有趣。是的,一個進程將*解釋爲數組元素而另一個進程使用數組元素解釋「$ *」和「$ @」是非常合理的。我認爲數組元素應該以某種方式存儲,類似於調用argc和argv的C程序方法。你能指導我一些網站,以便我可以深入研究這個主題嗎? – 2010-12-23 15:30:16