1. ホーム
  2. シェル

シェルエラーの解決:シンタックスエラー:予期しないファイルの終了

2022-02-25 09:18:05
<スパン bashで複雑なシェルスクリプトを書くのは久しぶりです。今日、combo-ewプロジェクトで、基本的に全てのテストが合格した後、tftpサーバからドライバ、アプリケーション、設定ファイルをcomboにダウンロードし、対応するドライバのアンインストールと再インストール、設定ファイルの検出などを終わらせるスクリプトを書いてみました。



ターミナルで bash -n install_combo.bsh を実行すると、次のエラーが常にポップアップ表示されます: install_combo.bsh: line 28: syntax error: unexpected end of file.

最初は、ファイルが130行以上あったので、問題が発生する場所に焦点を当てるために、最初のifコントロールだけを残し、それ以外はブロックしていました。

しかし、問題は残ったままです。

dingq@dingq-Debug:/tftpboot$ bash -x install_combo.bsh



' App='combo calibrate



' ドライバ='att7053.ko led.ko key.ko relay1218.ko



+ persistence=$'combo.inir'



+ tmpDir=$'/tmp/combo-tmpr'



install_combo.bsh: 28 行目: 構文エラー: 予期しないファイルの終了

Windowsではキャリッジリターンで、ubuntuでは表示されないはずです。





デバッグに使用する環境は

ホストシステム:ubuntu 11.10、エディタ:vim73



<スパン 対象となるボードシステム AT91SAM9260にインストールされたLinuxバージョン2.6.24.3

ググってみたところ、ファイル形式がunix形式でないことが原因ではないかと思われます。

<スパン

gvimで現在のセット設定を確認すると、fileformat=dosとなっていたので、:set fileformat=unixを渡してファイルを保存し、再実行しました。

バッシュ -x install_combo.bsh

エラーが消え、問題が解決します。







よく考えたら、エラーの根本は、添付ファイルからダウンロードしたスクリプトファイルが、ウィンドウズシステム上で書かれて完成したものだったということですね。



<スパン



<スパン だから、linuxの環境ではviやvimでスクリプトを書いた方が手間がかからないんだ。