構成に応じてファイル名を変更するスクリプトがあります。 $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これには2つの欠陥があります。
tr -d '\r'
その行はCR-LFで終わります(またはdos2unix
、sed
などに変更vim
)。- 最後の行はLFで終わりません。
だからbashはあなたがlast=$'zcash\r'
。
また:
- 必須ではない場合は、変数を引用する必要があります(
"$last"
いいえ$last
)。 [-e $curr]
[ -e $curr ]
または、好ましくは[ -e "$curr" ]
(スペースが重要である)で書く必要があります。- パイプは必要ありません
| echo
。 1行だけecho
入れてください。 エラーを確認しないので、++は次の
wget
ように簡単に書くことができます。source
rm
ソース<(wget -O-https://configmaker.com/my/TintedRawRubberyChafer.txt)