Você está sudo usando apenas o comando ls
, mas não logger
. Bash não (e não deveria) saber o que o sudo
faz, então apenas canaliza dois comandos. O primeiro é sudo
e o segundo é logger
. Não importa se você sudo ls
, logger
não.
Você deve sudo logger
, mas não funcionará porque é uma função Bash em vez de um executável a ser executado por sudo
.
BEWARE : ls | sudo logger
invocará /usr/bin/logger
se estiver instalado em seu sistema. Lembre-se: sudo
não sabe sobre as funções do Bash.
Sugiro que você adicione o usuário invocando seu script ao grupo do proprietário do arquivo para que você possa escrever nele sem aumentar o privilégio especial.
Além disso, eficiência, você está abrindo e fechando o arquivo de log para cada linha lida. Você pode fazer isso apenas uma vez para todo o processo de registro:
function logger() {
while read data
do
echo "$data"
done
return 0
} >>"$logfile"