![실행 파일에 대한 주문형 설치 래퍼 기능](https://linux55.com/image/52549/%EC%8B%A4%ED%96%89%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%A3%BC%EB%AC%B8%ED%98%95%20%EC%84%A4%EC%B9%98%20%EB%9E%98%ED%8D%BC%20%EA%B8%B0%EB%8A%A5.png)
다음 기능을 올바르게 작동시키는 방법
# Install git on demand
function git()
{
if ! type git &> /dev/null; then sudo $APT install git; fi
git $*;
}
함수 git $*
대신 호출로 ?/usr/bin/git
git()
답변1
이와 같이:
# Install git on demand
function git()
{
if ! type -f git &> /dev/null; then sudo $APT install git; fi
command git "$@";
}
내장된 command
억제 기능 조회. 또한 단어가 아닌 인수(예: 공백이 있는 파일 이름)를 올바르게 처리하기 때문에 귀하의 $*
것을 으로 변경했습니다 ."$@"
또한, 그렇지 않으면 눈에 띄기 때문에 -f
함수에 매개변수를 추가했습니다 .type
실패 와 같은 문제가 발생할 경우 apt-get install
어떻게 해야 할지 생각해 볼 수 있습니다.
답변2
아니면 어떤 명령이라도 실행할 수 있는 보다 일반적인 기능일 수도 있습니다. 이 경우 "-f"는 "-t"로 대체될 수 있습니다. 기능과의 충돌은 발생하지 않습니다.
function runcmd()
{
if ! type -t $1 >/dev/null; then
pkg=$(apt-file search -x "bin.*$1\$" | cut -d: -f1)
sudo apt-get install $pkg
fi
eval "$@"
}
물론, "apt-get install" 오류는 처리되어야 합니다.