ディレクトリ内のファイルの可用性を確認(または待機)するために使用されるスクリプトにエラーがあります。

ディレクトリ内のファイルの可用性を確認(または待機)するために使用されるスクリプトにエラーがあります。

私のディレクトリでトリガーファイルが利用可能であることを確認するためにシェルスクリプトを作成したいと思います。利用できない場合は、コードを約1時間待ってから、見つかるまで再利用可能であることを確認してください。見つかったら、スクリプトは正常に完了する必要があります。

トリガーファイル名には、定数部分とそれに続く可変日時部分があります。たとえば、Transfer-20210813061635681177では、Transfer-は一定で、リラクゼーションは毎日変更されます。

以下は私が試したものです。 Test.kshファイルに入れて、Unixサーバーのコマンドラインからksh Test.kshを提供して実行しようとしました。

#!/bin/ksh  
if [ ! -f /data/source/Transfer-* ] ; then  
   sleep 3600  # wait 60 minutes  
fi  
[ -f /data/source/Transfer-* ]  && echo 'trigger found' || echo 'trigger not found'  
exit 0

次のエラーが発生します。

Test.ksh:行6:行6の構文エラー: 'if'が一致しません。

私がここで何を間違っているのでしょうか?または即興でそれを修正する方法。助けを求める。

ベストアンサー1

この例は、スクリプトがどのように機能するかを示しており、いくつかのフォーマットの問題があるという@steeldriver + @UnixBeginnerのアイデアを強化します。変更後、テスト目的で3600秒が3秒に短縮されました。

$ cat x2
#!/bin/ksh
if [ ! -f /data/source/Transfer-* ] ; then
   sleep 3  # wait 60 minutes
fi
[ -f /data/source/Transfer-* ]  && echo 'trigger found' || echo 'trigger not found'
exit 0
$ ./x2
trigger not found
$

おすすめ記事