Não é correto renomear arquivos

0

Eu tenho um script para renomear um arquivo devido à configuração. Por que ele está renomeando o arquivo em $ last - é adicionar um espaço, então o programa não está funcionando corretamente. Qual pode ser o problema?

Config file https://configmaker.com/my/TintedRawRubberyChafer.txt

Código

#!/bin/bash

while true 
    do 

    wget https://configmaker.com/my/TintedRawRubberyChafer.txt

    source TintedRawRubberyChafer.txt

    if [-e $curr]; then
        echo "Make changes"
        mv claymore.stub.conf $last
        mv $curr claymore.stub.conf
    fi

    rm TintedRawRubberyChafer.txt | echo "removed"

    sleep 60

done

exit 0

A coisa é, a saída do console é 'claymore.stub.conf' - > 'zcash' $ '\ r'. Mas não deve haver '\ r'

    
por Zhyhalo Oleksandr 28.07.2017 / 16:34

1 resposta

1

Seu '\ r' vem do link que tem dois defeitos:

  • suas linhas terminam com CR-LF (altere isso com tr -d '\r' ou com dos2unix , sed , vim , etc)
  • sua última linha não é terminada em LF

Então bash presume que você quer dizer last=$'zcash\r' .

Morevover:

  • a menos que seja realmente necessário, você deve citar suas variáveis ( "$last" not $last )
  • [-e $curr] deve ser escrito [ -e $curr ] ou melhor [ -e "$curr" ] (espaços são importantes)
  • seu | echo não precisa de um canal. Basta colocar echo em uma linha separada.
  • como você não verifica erros, o wget + source + rm pode ser escrito simplesmente:

    fonte < (wget -O- link )

por 28.07.2017 / 17:07