Неправильное переименование файлов

У меня есть сценарий, переименовывающий файл из-за конфигурации. По тому, что он переименовывает файл в $ last - он добавляет пробел, поэтому программа работает некорректно. В чем может быть проблема?

Файл конфигурации https://configmaker.com/my/TintedRawRubberyChafer.txt

Код

#!/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

Дело в том, что консоль выводит файл «Claymore.stub.conf» -> 'zcash' $ '\ r'.Но не должно быть '\ r'

0
29.07.2017, 02:15
1 ответ

Ваш '\r' происходит от https://configmaker.com/my/TintedRawRubberyChafer.txt, который имеет два дефекта:

  • его линии CR -LF завершены (измените это с помощью tr -d '\r'или с помощью dos2unix, sed, vimи т. д.)
  • его последняя строка не заканчивается LF -

Итак, bash предполагает, что вы имеете в виду last=$'zcash\r'.

Моревовер:

  • если это действительно необходимо, вы должны заключать свои переменные в кавычки ("$last", а не$last)
  • [-e $curr]следует писать [ -e $curr ], или лучше всего[ -e "$curr" ](важны пробелы)
  • вашему | echoтруба не нужна. Просто поместите echoна отдельной строке.
  • так как вы не проверяете на ошибки, ваши wget+ source+ rmможно было просто записать:

    источник < (wget -O-https://configmaker.com/my/TintedRawRubberyChafer.txt)

1
28.01.2020, 02:45

Теги

Похожие вопросы