Unix

通過 shell 腳本為執行檔提供命令行參數

  • October 10, 2009

假設我有一個可執行的xyz,它接受可變數量的命令行參數,以及一個包裝 Korn shell 腳本xyz.ksh。有沒有一種簡單的方法可以將所有 shell 腳本參數按原樣傳遞給執行檔?

你需要使用:

"$@"

在所有情況下正確的參數擴展。這種行為在 bash 和 ksh 中是相同的。

大多數時候, $ * or $ @會給你你想要的。但是,它們使用空格擴展參數。" $ *" gives you all parameters reduced down to one. " $ @" 為您提供實際傳遞給包裝腳本的內容。

自己看看(同樣,在 bash 或 ksh 下):

[tla ~]$ touch file1 file2 space\ file
[tla ~]$ ( test() { ls $*; }; test file1 file2 space\ file )
ls: cannot access space: No such file or directory
ls: cannot access file: No such file or directory
file1  file2
[tla ~]$ ( test() { ls $@; }; test file1 file2 space\ file )
ls: cannot access space: No such file or directory
ls: cannot access file: No such file or directory
file1  file2
[tla ~]$ ( test() { ls "$*"; }; test file1 file2 space\ file )
ls: cannot access file1 file2 space file: No such file or directory
[tla ~]$ ( test() { ls "$@"; }; test file1 file2 space\ file )
file1  file2  space file

引用自:https://serverfault.com/questions/73168