Por que isso não funciona?
A razão pela qual sua abordagem não funciona é que você está lendo o arquivo usando < "stdin", significa que seu shell está encarregado de ler o arquivo e você o executou usando um usuário comum para não ter o direitos necessários para ler o arquivo. Agora você deve saber que executar o comando read usando sudo não ajudará a não mencionar que é um shell embutido que não pode ser executado usando sudo , como cd etc.
Como faço para que funcione?
A única coisa que você deve fazer é de alguma forma ler o arquivo vi root ou um usuário / grupo com o privilégio necessário. Então você pode fazer como:
sudo cat /root/txt | while read -r name value;
do
some command
done
neste caso, apenas cat será executado com sudo .
No entanto, a melhor prática é colocar seu script em /usr/local/bin para que todos tenham acesso para executá-lo.
Observe também que, quando você quiser redirecionar algo para /root/example , use sudo tee :
echo test | sudo tee file
ou execute o script inteiro usando sudo .