Obrigado pelo empurrão, Micah. Isso fez minha criatividade fluir.
Atualizado:
Testado no Bash 3/4, todos internos, sem impedimentos:
Portabilidade: 100% compatível apenas com Bash 3 e Bash 4
function _busybox_has() {
builtin command -v busybox >/dev/null ||
return 1
# Sanitize searches for '[' and '[['
a=$1
a=${a//[/\[}
[[ $(busybox) =~ [[:space:]]($a)([,]|$) ]] ||
return 1
}
Não há bashisms testados no Dash:
Portabilidade: Portátil em todas as partes com sed / egrep
_busybox_has() {
busybox 2>/dev/null >/dev/null ||
return 1
# Sanitize searches for '[' and '[['
a=$(echo $1 | sed 's/[[]/\[/g')
busybox | egrep -oq "[[:space:]]($a)([,]|$)" ||
return 1
}
Não há bashisms, grep -e em vez de egrep (mais portável), testados no Dash:
Portabilidade: portátil em todos os sh com sed / grep -e
_busybox_has() {
busybox 2>/dev/null >/dev/null ||
return 1
# Sanitize searches for '[' and '[['
a=$(echo $1 | sed 's/[[]/\[/g')
busybox | grep -oqe "[[:space:]]\($a\)\([,]\|\$\)" ||
return 1
}
Para testar:
_busybox_has md5sum && echo yes || echo no