Você não precisa do operador $()
nos comandos sudo sh -c ...
.
Quando você usa esse operador para sed '$a\' ${filePath} > ${filePath}.bak
, então sed
e o redirecionamento para os comandos file >
são executados primeiro sob os direitos b do usuário, que são insuficientes para gravação. E somente depois que sudo sh -c
é executado na saída dos comandos anteriores.
Use sudo sh -c "sed ..."
e sudo sh -c "echo ..."
.