erro de sintaxe próximo ao token ';' (lição de casa)

2

Estou escrevendo um alias que insere um nome de arquivo e, depois, certificando-se de que o arquivo é regular e legível, copia o arquivo usando cp -i para a pasta de backup $HOME/Backup

Sou muito novo no UNIX, por isso estou passando por algumas dificuldades para realizar isso. Aqui está o meu código:

alias getname='read filename'

alias vfile='getname; if [ ! -f $filename ]; then echo "Irregular file"; (exit 1); elif [ ! -r $file ]; then echo "Not readable"; (exit 2); fi;'


alias backup='vfile; if [ vfile ]; then cp -i $filename $home/Backup; fi;'

Eu testei o vfile alias e funciona, os erros que estou recebendo são:

-bash: syntax error near unexpected token ';'

Comecei a receber esse erro assim que incluí vfile como a primeira operação; se eu não executar vfile antes da instrução if, ele usará o nome do arquivo da última vez que ele foi executado. Tenho que ter certeza de que vfile não produziu um erro antes que eu possa copiá-lo.

Antes de adicionar vfile como o primeiro comando, recebi este erro:

cp: cannot create regular file '/Backup/*': No such file or directory

mas, de fato, existe um diretório chamado Backup na minha pasta pessoal, então também não sei o que está causando isso.

    
por mike 13.10.2017 / 03:54

2 respostas

2

Seu alias vfile termina com um ; e, em seguida, o alias backup começa com vfile; . Então, isso é dois ; s em sucessão sem uma declaração no meio, o que não é permitido:

$ echo ; ;
bash: syntax error near unexpected token ';'

Elimine o ; no final de vfile .

    
por 13.10.2017 / 03:59
2

Use meu alias da sua última pergunta em vez de ter os dois aliases.

Como seu alias vfile lançará um código de erro se estiver errado, você pode fazer isso:

alias filebackup='vfile && cp -i "$filename" "$HOME/Backup/"'

O && dirá apenas para executar o comando cp se vfile sair com 0

EDIT desculpe, estou cansado

$home não é uma variável de ambiente válida, portanto, a menos que você a defina manualmente em algum lugar, isso explica por que você recebeu o erro "não há arquivo ou diretório" porque expandiu para '' . Sempre cite suas variáveis.

    
por 13.10.2017 / 04:01

Tags