拦截并修改bash脚本中的命令

use*_*ser 4 shell bash shell-script

我有一些脚本,脚本中的一些命令是这样的

./executable arg1 arg2 .. argn

我想将上面的命令更改为

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

更改脚本的一种方法,但我不想这样做,而是想拦截这些命令,更改这些命令并运行它们。我怎样才能做到这一点?

Joh*_*024 5

首先,将现有的可执行文件移动到新位置:

mv ./executable ./executable.original
Run Code Online (Sandbox Code Playgroud)

其次,在其中创建一个 shell 脚本。将以下命令放入名为的新文件中./executable

#!/bin/sh
LD_PRELOAD=/some/lib ./executable.original my_arg1 my_argn "$@"
some_other_command
Run Code Online (Sandbox Code Playgroud)

shell 将替换调用程序提供的"$@"咒语。arg1 arg2 argn

第三,在新文件上设置执行位:

chmod a+rx ./executable
Run Code Online (Sandbox Code Playgroud)