コマンドを受け取り、リモートホスト上で実行するスクリプトがあります。それは正常に動作します、例えば:
$ rexec "ant build_all"
リモートシステム上で "ant build_all"コマンドを実行します(SSH経由など)。
私は怠け者なので、このコマンドのエイリアス(そして最終的にはいくつかのもの)を設定したいと思います。たとえば、
$ rant build_all
bashは自動的に起動します
$ rexec "ant build_all"
私はエイリアスでこれをやってみましたが、もし私が定義すれば
alias rant=rexec ant
"rant"に渡された引数は次のように末尾に追加されます:
$ rant build_all -Dtarget=Win32
(interpreted as:)
$ rexec "ant" build_all -Dtarget=Win32
これは失敗します。なぜなら、rexecは本当に1つの引数しか取らず、他の引数を無視するからです。
私はおそらくこれをbashラッパーで行うことができますbashには私のためにこれを行うための組み込み関数、おそらく引数の名前付き引数バージョン、またはperlのような引用文字列コマンド(例:qw / /)、またはそのようなものがあるのだろうかと思っていました。
回答:
回答№1の場合は3すべての引数について、これは機能します。
function rant () {
rexec "ant $*"
}
どの引数を渡すかに応じて、引用符を調整する必要があるかもしれません。
回答№2については2
私はケン・Gの答えを使用して終わったが、1つより良い:rexを関数のように定義する:
function rex {
run_remote.sh -c "$*"
}
エイリアスでrexecを使うことができました。
alias rant="rex ant"
それでも私が必要とするように議論を包み込んでください。
私はbashでそのような関数を使うことができるのを忘れていました。これは、ラッパースクリプトを作成することなく、私が必要としていたものとまったく同じです。
グッドチップ、ありがとう!
編集: "rexec"を "rexec"に変更しました。私のシステムには既に "rexec"というプログラムがありました。
回答№3の場合は0
エイリアスではなく、関数として実行できます。
function rant { rexec "ant $1"; }
エイリアスのようにコマンドラインで呼び出すことができます