セミコロンを使用してコマンドを区切ることができます:
cd /my_folder;rm *.jar;svn co path to repo;mvn compile package install
そうですか?
前のコマンドが成功した場合にのみ各コマンドを実行する場合は、 &&
を使用してそれらを結合します オペレーター:
cd /my_folder && rm *.jar && svn co path to repo && mvn compile package install
コマンドの 1 つが失敗すると、それに続く他のすべてのコマンドは実行されません。
前のコマンドが失敗したかどうかに関係なく、すべてのコマンドを実行する場合は、セミコロンで区切ります:
cd /my_folder; rm *.jar; svn co path to repo; mvn compile package install
あなたの場合、次のコマンドの実行が前のコマンドの成功に依存する最初のケースが必要だと思います.
すべてのコマンドをスクリプトに入れて、代わりに実行することもできます:
#! /bin/sh
cd /my_folder \
&& rm *.jar \
&& svn co path to repo \
&& mvn compile package install
行末のバックスラッシュは、次の行が新しいコマンドであるとシェルが認識しないようにするためにあります。バックスラッシュを省略すると、コマンド全体を 1 行で記述する必要があります。
バックスラッシュと &&
を使用するよりも便利な方法 どこでも、コマンドのいずれかが失敗した場合にスクリプトを終了するようにシェルに指示します。 set
を使用してそれを行います -e
を使用した組み込み関数 口論。これにより、より自然な方法でスクリプトを書くことができます:
#! /bin/sh
set -e
cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install
それをファイルに保存します。たとえば、myscript
です。 、実行可能にします:
chmod +x myscript
マシン上の他のプログラムと同じように、そのスクリプトを実行できるようになりました。しかし、 PATH
にリストされているディレクトリ内に配置しない場合 環境変数 (例:/usr/local/bin
、または一部の Linux ディストリビューションでは ~/bin
)、そのスクリプトへのパスを指定する必要があります。現在のディレクトリにある場合は、次のように実行します:
./myscript
スクリプト内のコマンドは、最初の例のコマンドと同じように機能します。次のコマンドは、前のコマンドが成功した場合にのみ実行されます。すべてのコマンドを無条件で実行するには、単に set -e
を呼び出さないでください :
#! /bin/sh
cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install
を使用していることがわかりました。コマンドを分離するには、フォアグラウンドでのみ機能します。例:
cmd1; cmd2; cmd3 &
- cmd3
のみを実行します バックグラウンドで、cmd1 && cmd2 && cmd3 &
- エラーがない場合、チェーン全体をバックグラウンドで実行します。
無条件実行に対応するには、括弧を使用してこれを解決します:
(cmd1; cmd2; cmd3) &
- いずれかのステップが失敗した場合でも、一連のコマンドをバックグラウンドで実行します。
それらをすべて一度に実行するには、パイプライン キー "|" を使用できます。そのように:
$ cd /my_folder | rm *.jar | svn co path to repo | mvn compile package install