我有一个根据配置重命名文件的脚本。通过重命名 $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)