Bashスクリプトでコマンドを傍受して修正します。

Bashスクリプトでコマンドを傍受して修正します。

いくつかのスクリプトがあり、スクリプトのいくつかのコマンドは次のとおりです。

./executable arg1 arg2 .. argn

上記のコマンドを次に変更したいと思います。

LD_PRELOAD=/some/lib ./executable my_arg1 my_argn arg1 arg2 argn; some_other_command

スクリプトを変更する1つの方法ですが、そうしたくありません。このコマンドを傍受して変更して実行したいです。どうすればいいですか?

答え1

まず、既存の実行可能ファイルを新しい場所に移動します。

mv ./executable ./executable.original

次に、その中にシェルスクリプトを作成します。次のコマンドを次の新しいファイルに入力します./executable

#!/bin/sh
LD_PRELOAD=/some/lib ./executable.original my_arg1 my_argn "$@"
some_other_command

シェルは"$@"呼び出し元プログラムによってarg1 arg2 argn提供される注文を置き換えます。

第三に、新しいファイルに実行ビットを設定します。

chmod a+rx ./executable

答え2

Bashではファンキーな関数名を持つことができるので、これは正確に必要なことをする必要があります。

./executable() {
  LD_PRELOAD=/some/lib command ./executable my_arg1 my_argn arg1 arg2 argn
}

もちろん、傍受したり、そうでexecutableはないでしょう。/usr/bin/executable

関連情報