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
.