解決策は 3 つあります: 1. "dos2unix filename" コマンドを使用して、指定されたファイルを Unix 形式に直接変換します; 2. sed コマンドを使用して、終了文字を Unix 形式に直接置き換えます。 "sed - i "s/\r//" filename" または "sed -i "s/^M//" filename"; 3. vi を使用してファイルを開いた後、"set ff=unix" を使用してファイルを unix にコピーし、「:wq」を使用して保存します。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
シェル スクリプトの実行時にこのようなエラーが表示される主な理由は、シェル スクリプト ファイルが dos 形式であるためです。つまり、各行の終わりは \r\n で識別されます。Unix 形式ファイルの行の終わりは \n でマークされます。
スクリプト ファイルが dos 形式であるか unix 形式であるかを確認するいくつかの方法。
(1) cat -A filename 表示結果から dos 形式のファイル行末は ^M、uni x 形式のファイル行末は 、ファイル行末尾は ^M であることが判断できます。 unix 形式では、unix 形式 ファイル行は で終わります。
(2) od -t x1 ファイル名 出力内容に 0d 0a という文字があればそのファイルは dos 形式、0a だけがある場合は unix 形式です。
(3) vi ファイル名でファイルを開いて set ff を実行 ファイルが dos 形式の場合は fileformat=dos、unxi の場合は fileformat= と表示されますユニックス。
解決策:
(1) Linux コマンド dos2unix filename を使用して、ファイルを Unix 形式に直接変換します。
dos2unix filename
(2) sed を使用します。コマンド sed -i "s/\r//" filename または sed -i "s/^M//" filename は、終了文字を Unix 形式
sed -i “s/\r//” filename sed -i “s/^M//” filename
に直接置き換えます (3) vi filename はファイルを開きますset ff=unix ファイルを unix に設定してから、wq を実行し、unix 形式で保存します
set ff=unix
推奨学習: Linux ビデオ チュートリアル
以上がLinux が sh スクリプトを実行できない場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。