1. ホーム
  2. bash

[解決済み] コマンドラインの最初の引数を取り、残りを渡す。

2023-02-05 23:21:53

質問

check_prog hostname.com /bin/check_awesome -c 10 -w 13

check_remote -H $HOSTNAME -C "$ARGS"
#To be expanded as
check_remote -H hostname.com -C "/bin/check_awesome -c 10 -w 13"

以上、ご理解いただけたでしょうか。私はこれを約20以上のコマンドに使用する予定なので、引数は変更されるでしょう。プログラムをラップする奇妙な方法ですが、私たちがここで使用しているいくつかのシステムでいくつかの問題を回避するためです (70年代のコードが好きでなければなりません)。

上記はPerlまたはPythonで書くことができますが、Bashが好ましい方法です。

どのように解決するのですか?

あなたは シフト

shift は、位置パラメータを操作するシェル組み込み関数である。shift を呼び出すたびに、すべての位置パラメータが 1 つずつ下にシフトします。2 は $1 に、$3 は $2 に、$4 は $3 に、といった具合です。

の例です。

$ function foo() { echo $@; shift; echo $@; } 
$ foo 1 2 3
1 2 3
2 3