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'
}