Use apenas aspas duplas em vez de aspas simples. (Aspas simples não permitem expansão de variáveis).
echo "name to change"
read updatenaamold
echo "enter new name:"
read updatenaamnew
sed -i "s/$updatenaamold/$updatenaamnew/g" $naam_dir
echo "name changed"
Nota 1: Se $naam_dir
for um diretório, também não funcionará. Afaik sed
funciona em uma base arquivo por arquivo.
Nota 2: Se o usuário inserir caracteres especiais (como: / ^ $ []
), as coisas não funcionarão como esperado, porque isso irá confundir o sed. Solução alternativa (não tenho certeza se esse seria o melhor caminho):
updatenaamold=$( POSIXLY_CORRECT=1 /bin/echo "$updatenaamold" | sed 's/[^a-zA-Z0-9]//g' )
updatenaamnew=$( POSIXLY_CORRECT=1 /bin/echo "$updatenaamnew" | sed 's/[^a-zA-Z0-9]//g' )
Adicione antes do sed. Ele irá remover caracteres que não sejam letras e números (sem espaços, sem caracteres internacionais, etc). Outra abordagem seria abortar quando encontrado caracteres estranhos (e evitar erros acidentais).