Javaアプリケーションを開発しました。アプリケーションを5つのサブアプリケーションに分割し、シェルスクリプトを使用して各サブアプリケーションへのサービスラッパーを作成しました。
subaap1/bin/app.sh subaap2/bin/app.sh ...
次に、起動スクリプトを作成します。 startup.sh
すべてのラッパースクリプトを実行するには:
#!/bin/bash sh subaap1/bin/app.sh start sh subaap2/bin/app.sh start ...
しかし、実行すると、次のようになります。
予期しないコマンド:開始
これを修正するにはどうすればよいですか?
コメント
- 私が知る限り、そのエラーはアプリケーションから発生しています。 subaap1を実行するためにどのコマンドを入力しますか?
回答
shを使用する必要はありません。サブアプリケーションを実行するためのスクリプト。
使用するだけ:
#!/bin/bash subaap1/bin/app.sh start subaap2/bin/app.sh start ...
以下のコメントに従って更新:
お使いのバージョンは機能するはずですが、シェルshが何を呼び出しているかを知る必要があります。シェルが間違っているか、使用しようとしているシェルのアプリの権限が正しくない可能性があります。
コメント
- よろしいですか?
bash
は引数をスクリプトに渡します'実行中('は私のsh
がシンボリックリンクされているものです);私は'他のシェルについて知らない - @ Michael-shを使用すると、シェルは通過しますか?正しいかもしれません-私は'しませんそれをやりたいのなら、私はいつも引用符で囲みます。またはここのように、jus t shを削除すると、bashはその行がアプリケーションであると想定して満足しています。
- コマンドラインから
subaap1/bin/app.sh start
を実行しようとしましたが、完全に機能します。sh
を使用せずにシェルスクリプトを変更しましたが、startup.sh: line 2: subaap1/bin/app.sh: Permission denied
を取得しました。何か提案はありますか? - はい、
sh /path/to/shell/script arg
を試しましたが、引数が成功しました。sh
が実際にリンクされているシェルによって異なる場合があります - @ Michael-良い点です! shはbash以外の場所に移動する可能性があります。