エラーとなったシェルスクリプトを実行します。"予期しないトークン付近の構文エラーに対する解決策`"
エラー: "予期しないトークン付近の構文エラーに対する解決策`".を含むシェルスクリプトを実行します。
今日、Cshellスクリプトを書いて、エラーsyntax error near unexpected token `で実行したところ、スクリプトの構文は問題なく、ようやく問題を発見しました。
Open your SHELL script file with the command vi -b and you will. Find an extra ^M at the end of each line of the script.
昔のテレタイプライターは、改行するのに、2つの文字を使っていました。1文字はスライドを最初の位置に戻し(キャリッジリターン、ASCII 0Dと呼ぶ)、もう1文字は紙を1行上に移動させる(ラインフィード、ASCII 0Aと呼ぶ)ものである。コンピュータが登場した当時、メモリは非常に高価なものだった。UNIXの開発者は行末を1文字にすればいいと考え、LinuxはUnixに追随し、Appleの開発者も同様だった。MS-DOSやWindowsを開発した人たちは、古いスタイルにこだわることにしたのです。
MS-DOSやWindowsでは、キャリッジリターン+ラインフィードで改行を表すので、LinuxのVimで行末の"^M"記号は、WindowsのVCで書いたコードを見るときに、文字を表すことになるのです。
Vimでのこの問題の解決方法は、Vimのreplace機能を使って、以下のreplaceコマンドラインを入力することで、すべての"^Ms"を取り除くだけと簡単です。
1) vi -b setup.sh
2)コマンド編集行で<は: ESCを押してshift+:コロン>タイプ: %s/^M//g。
注:上記のコマンドラインの ^M は M + ^ ではなく、 "Ctrl+v" と "Ctrl+M" で生成されたものです。
これを置き換えたら、保存すれば実行されます。もちろん、他にも以下のような置き換え方法があります。
a. linux のバージョンによっては dos2unix プログラムがあり、それを使って ^M を取り除くことができます。
b.cat filename1 | tr -d "\r" > newfile 新しいファイルを生成するために^Mを取り除く、sedコマンドなど。置き換えられるものはすべて新しいファイルを生成するために使用されます。
上記のように^Mを削除すると^Mシェルスクリプトは正常に動作したのですが、その後同僚に聞いたところ、Windowsのメモ帳でプログラムパスを変更したため、各行に余分な^Mがついてしまったことが判明しました。
関連
-
Racer版 - CentOS7システムインストールと構成図のチュートリアル
-
[シェルプログラミング】シェルスクリプトの実行エラー: シンタックスエラー: 予期せぬファイルの終了
-
変数 `xxx' の解は、初期化子を持っているが型が不完全である。
-
警告について:互換性のないポインタ型からの初期化【デフォルトで有効
-
Ubuntu next install nginx,make: *** `default'が必要とする `build' をターゲットとするルールがありません。停止します。
-
PackagesNotFoundError: 以下のパッケージは、現在のチャネルから利用できません。
-
ubuntuでグローバルシステムエージェントを設定する
-
テキストファイルがビジー状態になる問題を解決
-
cp: 通常のファイル `/usr/local/bin/orange' を作成できません。テキストファイルがビジー状態
-
gcc/g++エラー... /crt1.o: 関数 `_start' で。(.text+0x18): `main'への未定義の参照エラー
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
SSHパスワードフリーログイン設定後、stdinがターミナルでないため、疑似ターミナルが割り当てられない。
-
MongoDBインストール+解決エラー。mongod.service の起動に失敗しました:until not found
-
R パッケージのインストール: パッケージ 'phangorn' のインストールで終了ステータスが 0 以外になった。
-
mach-mini2440.c:155: error: array type has incomplete element type
-
ImportError: Flaskという名前のモジュールがなく、パッケージのインポートに失敗しました。
-
Linuxでビジー状態のテキストファイルでプログラムを実行する場合の対処法
-
Linuxでプログラム実行時にTextファイルがビジーになる問題の解決方法です。
-
'float' オブジェクトは整数として解釈できません。
-
pip: コマンドが見つかりません
-
centos - centos7 で Python プログラムをバックグラウンドで実行する。