Quantcast
Channel: jun01tの日記
Viewing all articles
Browse latest Browse all 87

シェル・コマンド演算子

$
0
0

シェルスクリプトコマンドラインを扱う際に、コマンドの実行を制御する演算子として「;」、「&」、「&&」、「||」がよく使われます。それぞれの違いと使い方をわかりやすく解説します。


1. セミコロン(;

特徴

  • コマンドを順番に実行します。
  • 各コマンドは独立して実行され、前のコマンドの成功・失敗に関係なく次のコマンドが実行されます。

command1; command2; command3

この場合、command1が終了した後にcommand2、その後にcommand3が実行されます。

使用例

echo "Hello"; echo "World"

出力:

Hello
World

2. アンパサンド(&

特徴

  • コマンドをバックグラウンドで実行します。
  • コマンドの終了を待たずに、次のコマンドが即座に実行されます。

command1 & command2 &

この場合、command1command2並列で実行されます。

使用例

sleep 10 & echo "Done"

出力:

Done

sleep 10はバックグラウンドで実行され、すぐにecho "Done"が実行されます。)


3. ダブルアンパサンド(&&

特徴

  • 前のコマンドが成功(終了ステータス0)した場合のみ、次のコマンドを実行します。

command1 && command2

この場合、command1が成功した場合にのみcommand2が実行されます。

使用例

mkdir new_directory && cd new_directory

mkdirが成功してディレクトリが作成された場合にのみ、cdコマンドが実行されます。


4. ダブルパイプ(||

特徴

  • 前のコマンドが失敗(終了ステータスが0以外)した場合に、次のコマンドを実行します。

command1 || command2

この場合、command1が失敗した場合にのみcommand2が実行されます。

使用例

mkdir existing_directory || echo "Failed to create directory"

既に存在するディレクトリを作成しようとして失敗した場合にのみ、「Failed to create directory」が出力されます。


演算子の違いを比較

演算子動作の概要 使用例
;コマンドを順番に実行 command1; command2
&コマンドをバックグラウンドで実行 command1 & command2 &
&&前のコマンドが成功した場合に次を実行 command1 && command2
||前のコマンドが失敗した場合に次を実行 command1 || command2

応用例

1. 複数の演算子を組み合わせる

command1 && command2 || command3
  • command1が成功した場合、command2が実行され、command3はスキップされます。
  • command1が失敗した場合、command3が実行されます。

2. ログファイルへの出力を組み合わせる

command1 && echo "Success" > log.txt || echo "Failure" > log.txt
  • command1が成功した場合は「Success」がログに記録され、失敗した場合は「Failure」が記録されます。

3. 並列処理の完了を待つ

バックグラウンドで実行した複数のコマンドの完了を待つには、waitを使用します。

command1 & command2 & command3 & wait

まとめ

  • ;: コマンドを順番に実行。
  • &: コマンドを並列(バックグラウンド)実行。
  • &&: 前のコマンドが成功した場合に次を実行。
  • ||: 前のコマンドが失敗した場合に次を実行。

これらの演算子を使い分けることで、効率的かつ柔軟にシェルスクリプトコマンドライン操作を行うことができます。


Viewing all articles
Browse latest Browse all 87

Trending Articles