O $1
no script sh -c
expandirá para o primeiro argumento de linha de comando do script esse , não para o primeiro argumento de linha de comando do script de chamada (desde o script sh -c
é único citado).
A solução correta não é injetar o valor de $1
do script de chamada no script sudo
(isso permitiria várias vulnerabilidades interessantes de injeção de código), mas passar $1
do script externo para o interior:
sudo sh -c 'printf "%s\n" "$1" > /sys/class/backlight/intel_backlight/brightness' sh "$1"
Como alternativa, use sudo tee
para gravar no arquivo como root:
printf '%s\n' "$1" | sudo tee /sys/class/backlight/intel_backlight/brightness >/dev/null
Se os dados impressos no arquivo forem sempre um inteiro, use %d
como o espaço reservado printf
format em vez de %s
.