「ライン 1: $':\r': コマンドが見つかりません」というメッセージが表示されるのはなぜですか。

「ライン 1: $':\r': コマンドが見つかりません」というメッセージが表示されるのはなぜですか。

私のラップトップ(DOS)でCygwinを使用しています。私は同僚と私自身からシナリオを集めました。私はITの専門家ではなく、Unixを理解していません。私は同僚の文法に従い、いくつかの簡単なことを処理できます。

このスクリプトは私の古いラップトップでうまく動作します。先ほどノートパソコンを変更してCygwinをインストールしました。スクリプトを実行しても機能しません。以下は、私が受け取ったエラーメッセージの例です。

line 1: $':\r': command not found
line 5: syntax error near unexpected token `$'\r''
line 5: `fi

私のスクリプトの最初の5行は次のとおりです。

:
iter=1
if [ -f iter.txt ]
   then rm ./iter.txt 
fi  

誰かがこの問題を解決する方法を説明できますか?

ベストアンサー1

Windowsスタイルの行末があります。

対照的に、ランダムなコマンドは:で読み取られ、:<carriage return>でマークされる、またはより:\r完全にマークされます$':\r'

ただ走ればdos2unix scriptname大丈夫でしょう。


その項目がない場合は、dos2unix次のことが機能します。ほぼどこでも(WindowsのMobaXtermでテストしました):

vi -b filename

次に、vi次のように入力します。

:%s/\r$//
:x

今行ってもいいです。


vimCygwinで使用されているCygwinでは、viこれを行うにはいくつかの方法があります。もう1つはfileformat値を取ることができる設定に関連していますdosunixファイルをロードした後に明示的に変更

ファイル形式の設定= Unix
または、ファイルを書き込むときに明示的にファイル形式を強制します。

:w +ファイル形式= Unix

詳細については、次のようなトピックをカバーする多くの質問と回答をご覧ください。

おすすめ記事