declare é um comando somente bash, que é o equivalente a typeset em ksh ou zsh .
dash não possui comando equivalente e não possui suporte a matriz diferente de "$@" .
O caminho a seguir é armazenar a lista de nomes de usuários em uma lista delimitada por nova linha:
users="me
you
someone"
E use:
who | grep -F "$users"
No entanto, ele procurará me , you ou someone em qualquer lugar na who output (observe que someone contém me , por exemplo).
Algumas implementações grep têm -w para pesquisar apenas palavras.
Você provavelmente desejaria verificar a primeira coluna da who output (assumindo que nenhum de seus usuários tem espaços em branco em seus nomes de usuário):
users="me you someone"
grepUsernames() {
awk -v u="$users" '
BEGIN{split(u, a); for (i in a) users[a[i]]}
$1 in users'
}