問題の入力

問題の入力

私はこれをbashスクリプトに持っています

DAY2="20130605"<Cr>
echo  "This is yesterday date:"$DAY2"end"

出力が次の理由は何ですか?キャリッジリターン文字があるようですが、DAY2どこから出てきますか?

ends is yesterday date:20130605

ベストアンサー1

Enterを押すと、カーソルが行の先頭に戻ります。出力文字列は次のとおりです。

    This is yesterday date:20130605<Cr>end

端末がクリックされない限り<Cr> カーソルを行の先頭に戻し、そこにある文字を上書きします。

つまり、「Thi」が「end」に置き換えられ、次のようになります。

    ends is yesterday date:20130605

実行する操作を実行するには、スクリプトは次のようになります。

   variable="text"
   echo "Some sentence $variable"

どちらが出力されるのか

   Some sentence text

誤ったキャリッジリターンがある場合^MviBruceが言ったように)とマークする必要があります。

ソリューション1

キャリッジリターンや他の印刷されない文字を削除する最善の方法は、単一文字のすべてのインスタンスを削除するオプションを指定してtrコマンドを使用することです。ここで、キャリッジリターン文字のエスケープシーケンスは次のとおりです。-d\r

    tr -d '\r'

これにより、すべてのキャリッジリターンが削除されます。スクリプトで次を実行して、キャリッジリターンのすべてのインスタンスを削除し、元のスクリプトファイルを上書きします。

    tr -d '\r' yourscript.bash > temp
    mv temp yourscript.bash

ソリューション2

または、viスクリプトを開くときは、次のように入力します。

    :%s/\r//g
    :wq

文書からキャリッジリターンを削除するには、文書を保存してください。

おすすめ記事