O comando read
usa uma variável name , portanto remova o sigil:
read uid
O que você está fazendo é: enviar o conteúdo da variável uid como o nome da variável para o comando de leitura. Como esse valor está vazio no momento, você tem
echo "a prompt: "
read
Esse é um código bash válido. O nome da variável padrão para um comando de leitura "careca" é REPLY
Dado seu código, aqui está uma reescrita leve:
function uid_Assoc {
local arg1=
echo "$arg1";
}
read -p "Please enter SUID: " uid
uid_Assoc "$uid"
Notas:
- você não precisa da palavra-chave
function
e da sintaxe ()
, escolha uma ou outra (somente minha opinião)
- localize variáveis em funções para limitar seu escopo
- use a opção
-p
para ler
-
sempre cite variáveis referenciadas (você nunca sabe quantos espaços o usuário digitará), a menos que você saiba por que você precisa deixar uma variável sem aspas.