Unix
通過 shell 腳本為執行檔提供命令行參數
假設我有一個可執行的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