У меня есть сценарий, переименовывающий файл из-за конфигурации. По тому, что он переименовывает файл в $ 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'
Ваш '\r' происходит от https://configmaker.com/my/TintedRawRubberyChafer.txt, который имеет два дефекта:
tr -d '\r'
или с помощью dos2unix
, sed
, vim
и т. д.)Итак, 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)