erro de sintaxe: fim inesperado do arquivo

erro de sintaxe: fim inesperado do arquivo
#!/bin/sh
if [ -e $1 ] ; then 
mv $1 $1_$(date +%Y%m%d%H%M) 
fi
exit 0

O meu requisito é procurar um arquivo e se o arquivo sair, renomeie o arquivo e saia do programa, precisamos renomear apenas se o arquivo sair

estou recebendo o erro mencionado acima

Responder1

De modo geral, as variáveis ​​​​bash devem sempre ser colocadas entre aspas duplas.

Por exemplo, digamos que $1 seja My File.txt. Seu script tenta fazer isso:

mv My File.txt My File.txt_201501010101

o que mvsignifica que você deseja mover arquivos My, File.txte Mycoletivamente para o destino File.txt_201501010101.

O que você quer é isto:

mv "My File.txt" "My File.txt_201501010101"

Consulte o seguinte para obter mais detalhes e outras armadilhas a serem evitadas: http://mywiki.wooledge.org/BashPitfalls#cp_.24file_.24target

PS exit 0no final de um script é redundante. Se o script terminar sem erros, o status de saída será implicitamente 0.

informação relacionada