無効なファイル名の変更

無効なファイル名の変更

構成に応じてファイル名を変更するスクリプトがあります。 $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これには2つの欠陥があります。

  • tr -d '\r'その行はCR-LFで終わります(またはdos2unixsedなどに変更vim)。
  • 最後の行はLFで終わりません。

だからbashはあなたがlast=$'zcash\r'

また:

  • 必須ではない場合は、変数を引用する必要があります("$last"いいえ$last)。
  • [-e $curr][ -e $curr ]または、好ましくは[ -e "$curr" ](スペースが重要である)で書く必要があります。
  • パイプは必要ありません| echo。 1行だけecho入れてください。
  • エラーを確認しないので、++は次のwgetように簡単に書くことができます。sourcerm

    ソース<(wget -O-https://configmaker.com/my/TintedRawRubberyChafer.txt)

関連情報