Bash
測試可以在 bash 和 zsh 上執行的函式的存在嗎?
有沒有辦法測試是否存在適用於
bash
和的 shell 函式zsh
?
如果您想檢查該名稱是否存在目前定義的(或至少可能標記為自動載入)函式,
foo
無論該名稱是否也可以使用內置/執行檔/關鍵字/別名,您可以執行以下操作:if typeset -f foo > /dev/null; then echo there is a foo function fi
儘管請注意,如果還呼叫了關鍵字或別名
foo
,則它將優先於函式(未引用時)。以上應該適用於
ksh
(它來自哪裡),zsh
並且bash
.
這是純 POSIX,因此它應該適用於所有 POSIX shell。
foo() { echo "bar" } if type 'foo' 2>/dev/null | grep -q 'function' then echo 'function exists' fi