잘못된 파일 이름 바꾸기

잘못된 파일 이름 바꾸기

구성에 따라 파일 이름을 바꾸는 스크립트가 있습니다. $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'은 없어야 합니다.

답변1

귀하의 '\r'은 다음에서 유래되었습니다.https://configmaker.com/my/TintedRawRubberyChafer.txt여기에는 두 가지 결함이 있습니다.

  • tr -d '\r'해당 행은 CR-LF로 끝납니다( 또는 dos2unix, sed등 으로 변경 vim).
  • 마지막 줄은 LF로 끝나지 않습니다.

그래서 bash는 당신이 last=$'zcash\r'.

또한:

  • 꼭 필요한 경우가 아니면 변수를 인용해야 합니다( "$last"아님 $last).
  • [-e $curr][ -e $curr ]또는 바람직하게는 [ -e "$curr" ](공백이 중요함) 로 작성해야 합니다.
  • 파이프가 필요하지 않습니다 | echo. 그냥 echo한 줄만 넣으세요.
  • 오류를 확인하지 않으므로 ++는 다음 wget과 같이 간단히 작성할 수 있습니다.sourcerm

    소스<(wget -O-https://configmaker.com/my/TintedRawRubberyChafer.txt)

관련 정보