2011-08-14 54 views
0

這是好的運行通配符腳本

evince ./result/demo_1000000_10000*.ps 
一個shell窗口上

。但是,當我把它放到一個腳本文件中,然後運行該文件,它找不到所有這些文件./result/demo_1000000_10000*.ps ...這裏*是爲了通配符,以下是腳本。

evince ./result/demo_1000000_10000"*.ps" 

那麼在將命令放入腳本時應該做什麼改變?

回答

4

它應該工作在腳本或命令行的方式相同。引號可防止通配符被擴展。只需從腳本中刪除它們。 (你爲什麼要添加這些擺在首位?)

0

如果從如圖所示的提示命令運行,那麼它也應該從一個shell腳本運行,如果調用進程的當前目錄是一樣的 - 與完全相同的符號。沒有理由在腳本版本中包含引號,如果您希望它與未腳本版本相同。如果你在命令行運行引用版本,它將會與腳本版本中的引用版本一樣失敗。

然而,在一個劇本,你就不用擔心了後記文件是否你打算去努力是在正確的位置。有時候,腳本使用絕對路徑,有時腳本使用cd改變目錄到正確的地方,有時有,用於定位文件的參數或環境變量。

所以,如果小心使用,你沒有任何改變的腳本工作 - 但也有很多方法可以防止腳本工作。其中之一是通過在通配符周圍添加引號。