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