Bash
如何將函式的所有參數傳遞給另一個命令?
你好,我有這個
~/.bash_profile
export GOPATH="$HOME/go_projects" export GOBIN="$GOPATH/bin" program(){ $GOBIN/program $1 }
所以我能夠做到
program "-p hello_world -tSu"
。有什麼方法可以在不使用引號的情況下執行程序和自定義標誌?如果我這樣做,program -p hello_world -tSu
它只會使用-p
標誌,空格之後的所有內容都將被忽略。
在您的
program
shell 函式中,使用"$@"
指代給函式的所有命令行參數的列表。使用引號,給定的每個命令行參數program
將另外單獨引用(您通常需要這個)。program () { "$GOBIN"/program "$@" }
然後你會這樣打電話
program
:program -p hello_world -tSu
或者,如果您想通過
hello world
而不是hello_world
,program -p 'hello world' -tSu
正如您所注意到的, Using
$1
僅指第一個命令行參數(並且$2
將引用第二個等)。的值$1
將另外在空格上拆分,並且每個生成的字元串都將進行文件名通配,因為擴展是未引用的。這將導致無法正確地將包含空格或文件名通配模式的參數傳遞給函式。