1. ホーム
  2. bash

[解決済み] Bash: 関数をパラメータとして渡す

2023-01-07 08:13:48

質問

Bashで関数をパラメータとして渡す必要があります。例えば、次のようなコードです。

function x() {
  echo "Hello world"
}

function around() {
  echo "before"
  eval $1
  echo "after"
}

around x

を出力する必要があります。

before
Hello world
after

私は知っている eval はこの文脈では正しくありませんが、これは単なる例です :)

何か思いつきませんか?

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

関数名やその引数の評価を遅らせるような派手なことは必要ないのであれば eval :

function x()      { echo "Hello world";          }
function around() { echo before; $1; echo after; }

around x

はあなたが望むことをします。この方法で関数とその引数を渡すこともできます。

function x()      { echo "x(): Passed $1 and $2";  }
function around() { echo before; "$@"; echo after; }

around x 1st 2nd

プリント

before
x(): Passed 1st and 2nd
after