Eu não sei qual linha 45 é, mas a linha $($ficTemp > $param)
está errada e provavelmente daria este erro: ela tenta executar o arquivo temporário como um script e escreve sua saída em $param
, então executa o comando string retornada.
Existem duas coisas óbvias erradas: -
- A menos que você tenha um
umask
incomum, você não tornou o arquivo temporário executável, daí o erro. - A saída do script é redirecionada, portanto, nunca haverá retorno de nada, e o
$()
não serve para nada.
O que você está tentando fazer? Se você quiser copiar o arquivo temporário de volta para o original, qualquer um dos itens a seguir fará isso: -
cat $ficTemp > "$param"
cp $ficTemp "$param"
mv $ficTemp "$param"
O último deles é mais eficiente, porque não precisa acessar os dados e remove o arquivo temporário ao mesmo tempo, mas o proprietário original e as permissões de acesso são substituídas (graças ao G-Man por apontar isso ).
O que você fizer, você deve usar"$param"
, para permitir espaços incorporados no nome ou no caminho do arquivo.