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
関連
-
undefinedlinuxでは127.0.0.1、 : では0.0.0.0です。
-
アクセスが拒否されました。PROCESS 特権が(少なくとも1つ)必要です。
-
ConnectionRefusedErrorです。[Errno 111] 接続が拒否されました。
-
psycopgのアセンブルはエラーになります。Error: pg_config 実行ファイルが見つかりません。
-
MongoDBインストール+解決エラー。mongod.service の起動に失敗しました:until not found
-
変数 `xxx' の解は、初期化子を持っているが型が不完全である。
-
ImportError: pkg_resources という名前のモジュールがない ソリューション
-
PackagesNotFoundError: 以下のパッケージは、現在のチャネルから利用できません。
-
シェルスクリプトに$0, $? , $! , $$, $*, $#, $@ などのシェルスクリプトとlinuxコマンド実行時の戻り値の意味
-
centos - centos7でcrontabを使用してmysqlのスケジュールバックアップを行う。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
undefinedmakefile のエラー *** セパレータがありません。
-
[Linux] [コンパイル] libmpc.so.3: cannot open shared object file: そのようなファイルまたはディレクトリはありません
-
解決 ERROR: EnvironmentError のため、パッケージをインストールできませんでした。[Errno 28] デバイスに空き領域がありません。
-
[シェルプログラミング】シェルスクリプトの実行エラー: シンタックスエラー: 予期せぬファイルの終了
-
VNC mesg を開くとき: ttyname に失敗しました。デバイスに不適切な ioctl
-
Linuxの一般的なコマンドを史上最も完璧にまとめた本(超充実! (超詳しい!)これだけ集めれば十分!?
-
ubuntuでグローバルシステムエージェントを設定する
-
エラーとなったシェルスクリプトを実行します。"予期しないトークン付近の構文エラーに対する解決策`"
-
Java Runtime Environmentを継続するためのメモリが不足しています。
-
Linuxでよくあるパーミッション関連のエラーとその解決法