bash 및 zsh에서 작동하는 기능이 있는지 테스트하시겠습니까?

bash 및 zsh에서 작동하는 기능이 있는지 테스트하시겠습니까?

bash두 가지 모두에 작동하는 쉘 기능이 있는지 테스트할 수 있는 방법이 있습니까 zsh?

답변1

foo내장/실행 파일/키워드/별칭을 해당 이름으로 사용할 수 있는지 여부에 관계없이 현재 정의된(또는 적어도 자동 로드된 것으로 표시된) 함수가 이름으로 있는지 확인하려면 다음을 수행할 수 있습니다.

if typeset -f foo > /dev/null; then
  echo there is a foo function
fi

그러나 키워드나 별칭도 호출되는 경우 foo(참조되지 않은 경우) 함수보다 우선합니다.

위의 내용은 ksh(출처) zsh및 에서 작동해야 합니다 bash.

답변2

이는 순수 POSIX이므로 모든 POSIX 쉘에서 작동합니다.

foo()
{
    echo "bar"
}

if type 'foo' 2>/dev/null | grep -q 'function'
then
   echo 'function exists'
fi

관련 정보