こんにちは、私はこれを持っています。~/.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
スペースの後ろのすべてのエントリは無視されます。
ベストアンサー1
program
シェル関数は、"$@"
関数に提供されているすべてのコマンドライン引数のリストを参照するために使用されます。引用符を使用すると、与えられた各コマンドライン引数がprogram
個別に引用されます(通常は必要に応じて)。
program () {
"$GOBIN"/program "$@"
}
これにより、program
次のように呼び出すことができます。
program -p hello_world -tSu
hello world
または代わりに合格したい場合はhello_world
、
program -p 'hello world' -tSu
ご存知のように、usingは$1
最初のコマンドライン引数だけを参照します(そして$2
2番目のものも参照します)。値は$1
さらにスペースに分割され、拡張が引用されていないため、各結果文字列はファイル名のグロービングを受けます。これにより、空白またはファイル名のグロービングパターンを含む引数が関数に誤って渡されます。