エラーを発生させる小さなシェルスクリプトがあります。
ファイルが予期せず終了しました。
スクリプトは次のとおりです。
#!
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
場合。を使用して実行すると、正しい行を追加しなかったため、シェルに「該当するファイルやディレクトリがありません」というメッセージが表示される可能性があります。 sh
sh
bash
./script.sh
#!
このスクリプトでは標準のPOSIX機能のみを使用するため、#!/bin/sh
-lineを使用できます。#!
(char) が整数ではない[ t -eq 1 ]
ため、テストは保持されません。t
設定中の場合変える t
[ "$t" -eq 1 ]
テストに使用するどこかの整数です。
シェルで「予期しないファイルの終わり」というメッセージを表示する唯一の方法は、スクリプトをDOSテキストファイルに変換することですbash
。
このエラーが発生した場合、スクリプトファイルはDOSテキストファイルである可能性があります(Windowsコンピュータで作成された可能性があります)。dos2unix
スクリプトを実行する必要があります。
バラより関連質問dos2unix
。
答え2
shebang行が欠落しており、定義されて#!/bin/sh
いt
ません。
答え3
#!
で置換または#!/bin/sh
実行されsh ./script.sh
、tは整数では$t
なくに設定する必要がありますt
。