Se você quiser usar read para passar os nomes e quiser excluir linhas que contenham os nomes:
read deletename; sed "/$deletename/d" test.txt
então pressione enter e read espera que você digite algo, então digite o que você quer que seja deletename , por exemplo 0 , então pressione enter novamente e o comando sed é executado. O conteúdo de test.txt aparecerá no terminal, mas todas as linhas que contiverem 0 , ou o que você digitou, serão excluídas do fluxo (NÃO do arquivo)
Se você quiser excluir apenas os nomes, é assim:
read deletename; sed "s/$deletename//g" test.txt
Se você digitar 0 , todas as instâncias de 0 serão excluídas.
Você pode redirecionar (ou tee ) a saída para um novo arquivo, ou se você quiser modificar o arquivo no local , use o sinalizador -i (após o teste)
read deletename; sed -i "/$deletename/d" test.txt
Neste caso, você não verá saída; as alterações serão gravadas no arquivo em vez de serem exibidas no terminal (no STDOUT).
Você precisa usar aspas duplas para permitir a expansão de parâmetro, já que as aspas simples irão suprimi-lo. mas a maneira mais correta, eu acho, embora não seja necessário neste caso simples, usar aspas simples em torno das outras partes da expressão e citar a variável normalmente:
sed 's/'"$deletename"'//g' test.txt