![잘못된 파일 이름 바꾸기](https://linux55.com/image/10250/%EC%9E%98%EB%AA%BB%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%20%EB%B0%94%EA%BE%B8%EA%B8%B0.png)
구성에 따라 파일 이름을 바꾸는 스크립트가 있습니다. $last의 파일 이름을 바꾸면 공백이 추가되어 프로그램이 제대로 작동하지 않습니다. 무엇이 문제일까요?
암호
#!/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
과 같이 간단히 작성할 수 있습니다.source
rm
소스<(wget -O-https://configmaker.com/my/TintedRawRubberyChafer.txt)