1

PHP上からCentOSサーバーにbashスクリプトを保存していSSH2ます。複雑なのは承知していますが、ご容赦ください。

(サーバー上で)ファイルを開くと:

vi myScript

そうですか:

ls -al^M
free -m

だから、私がそれを実行しようとすると:

bash myScript

出力でエラーがスローされます。

ls: invalid option -- 
Try `ls --help' for more information.
         total       used       free     shared    buffers     cached
Mem:           676        642         34          0         33        313
-/+ buffers/cache:        295        380
Swap:          767          1        766

それがどこから来ている^Mのですか?bash スクリプトは、改行とタブをサポートできる必要があります。

ありがとう。

4

2 に答える 2

5

^M は、Windows からの行末です。このファイルは最初に Windows で作成されました。それらを削除するには、vi で :1,$ s/^v^M//g のようなことを行うことができます。

またdos2unix、ファイル全体に対してコマンドを使用して、一度にクリーンアップすることもできます。スクリプトの実行前に行うことができます。

于 2012-09-14T04:37:30.320 に答える
3

^M、CR またはキャリッジ リターン文字です。どこかで、Windows マシンでよく見られる CRLF 行末でコードが汚染されました。また、多くのインターネット プロトコルは CRLF 行末を使用します。

修正するには、ファイルを編集しvimて使用し:set fileformat=unixます。:setまたは:set allに変更する前に、代わりにunix表示する必要がありますfileformat=dos。次に、ファイルを保存します。

バックスラッシュが行末にないため、CR は行末のバックスラッシュを台無しにします。それらの後には、改行ではないキャリッジ リターンが続きます。

于 2012-09-14T04:37:58.853 に答える