シェルスクリプトエラー

シェルスクリプトエラー

エラーを発生させる小さなシェルスクリプトがあります。

ファイルが予期せず終了しました。

スクリプトは次のとおりです。

#!
if [  t -eq  1  ]
then
 echo " TEST1 "
else
echo " TEST LAST LOOP "
fi

答え1

スクリプトには、対応するエラーが発生する項目はありません。次のようにsh ./script.shスクリプトを実行すると、

 TEST LAST LOOP 

出力として。 Condition)bash ./script.sh実行するt場合。を使用して実行すると、正しい行を追加しなかったため、シェルに「該当するファイルやディレクトリがありません」というメッセージが表示される可能性があります。 shshbash./script.sh#!

このスクリプトでは標準のPOSIX機能のみを使用するため、#!/bin/sh-lineを使用できます。#!

(char) が整数ではない[ t -eq 1 ]ため、テストは保持されません。t設定中の場合変える t[ "$t" -eq 1 ]テストに使用するどこかの整数です。


シェルで「予期しないファイルの終わり」というメッセージを表示する唯一の方法は、スクリプトをDOSテキストファイルに変換することですbash

このエラーが発生した場合、スクリプトファイルはDOSテキストファイルである可能性があります(Windowsコンピュータで作成された可能性があります)。dos2unixスクリプトを実行する必要があります。

バラより関連質問dos2unix

答え2

shebang行が欠落しており、定義されて#!/bin/shtません。

答え3

  • #!で置換または#!/bin/sh実行されsh ./script.sh、tは整数では$tなくに設定する必要がありますt

関連情報