私はこれを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
誤ったキャリッジリターンがある場合^M
(vi
Bruceが言ったように)とマークする必要があります。
ソリューション1
キャリッジリターンや他の印刷されない文字を削除する最善の方法は、単一文字のすべてのインスタンスを削除するオプションを指定してtr
コマンドを使用することです。ここで、キャリッジリターン文字のエスケープシーケンスは次のとおりです。-d
\r
tr -d '\r'
これにより、すべてのキャリッジリターンが削除されます。スクリプトで次を実行して、キャリッジリターンのすべてのインスタンスを削除し、元のスクリプトファイルを上書きします。
tr -d '\r' yourscript.bash > temp
mv temp yourscript.bash
ソリューション2
または、vi
スクリプトを開くときは、次のように入力します。
:%s/\r//g
:wq
文書からキャリッジリターンを削除するには、文書を保存してください。