Melhor usar getent passwd
do que ler /etc/passwd
diretamente. getent
também funciona com LDAP, NIS e outros. Eu acho que existe na maioria dos Unixes. (Meu OS X não tem isso, mas ele não tem minha conta em /etc/passwd
, então ...)
name=$(getent -- passwd "$USER" | cut -d: -f5)
O processamento de strings pode ser feito com a expansão de parâmetros do shell , estes são compatíveis com POSIX:
name=${name%%,*} # remove anything after the first comma
name=${name%,,,} # or remove just a literal trailing ",,,"
name=${name##* } # remove from start until the last space
echo "hello $name"
Use ${name#* }
para remover até o primeiro espaço. (Só espero que ninguém tenha um sobrenome de duas partes, com espaço intermediário).
O cut
também pode ser substituído por divisão de palavras ou read
, definindo IFS
como dois-pontos.