Bash 스크립트에서 명령을 가로채고 수정합니다.

Bash 스크립트에서 명령을 가로채고 수정합니다.

일부 스크립트가 있고 스크립트의 일부 명령은 다음과 같습니다.

./executable arg1 arg2 .. argn

위의 명령을 다음으로 변경하고 싶습니다.

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

스크립트를 변경하는 한 가지 방법이지만 그렇게 하고 싶지는 않습니다. 이 명령을 가로채서 변경하고 실행하고 싶습니다. 어떻게 해야 하나요?

답변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

관련 정보