1. ホーム
  2. リナックス

Linux】シェルスクリプト「syntax error: unexpected end of file」の原因と処理について

2022-02-25 17:43:14

スクリプトのデバッグは常に悪い、スクラップになる可能性が最も高い ......。

背景

プロジェクトでは新しいバックエンド サービスをデプロイする必要があったので、シェルのデプロイ スクリプトを書き始め、書いたスクリプトをサーバーに置いたところ、実行されずにエラーを報告し続けることに気づきました。

しかし、スクリプトをvimで確認すると51行目がなく、繰り返し実行すると必ずエラーが出て内部で拒否されます。

理由を教えてください。

私のスクリプトはウィンドウ環境で書かれ、リナックスサーバーに転送されたことがわかりました。(これが私の原因です)。

解決策

vim serverDeploy.sh
:set fileformat=unix
:wq

または

 dos2unix コマンドは dos ファイルを unix 形式に変換します (dos2unix をインストールする必要があります: yum -y install dos2unix)

dos2unix serverDeploy.sh

スクリプトを再実行すれば完了です。

sh -x serverDeploy.sh 

推薦の言葉

1.できればlinuxでシェルスクリプトを書く、windowsでideがいいなら、スクリプトの形式を変えること、サーバーにアップロードするときに実行権限をつけることを忘れないように。

2. sh -n serverDeploy.sh コマンドでスクリプトの構文を確認することができます。

3. シェルの変数参照に注意してください。

[ -z $VAR ]


文字列変数は二重引用符で囲んで使う習慣をつけましょう "$VAR" そうすれば、文字列が空でもスペースを含んでいても問題ありません。

Change to.
if [ -z "$PASODSPATH" ]; then
or.
if [ -z "$PASODSPATH" ]
then