実行中のシェルのプロセスID。最後に実行したコマンドのリターンコード(戻り値)。シェルの実行オプション(setコマンドや#!/bin/bash行に付けたオプション。シェルが最後に実行したバックグラウンドプロセスのPID。多くの言語でサポートされているif文による条件分岐はbashでも利用可能です。基本の構文は以下の通りです。条件式1と条件式2が偽だったときに実行する処理fielifやelseの部分は不要であればない場合もあります。以下は条件式が一つだけの場合です。条件式が偽だったときに実行するデフォルトの処理fiデフォルトの挙動も無い場合は以下のようになります。条件式が真だったときに実行する処理fiちなみに、thenの部分はこれだけのために一行使うのも無駄が多いので、以下のようにするのも一般的です。条件式が真だったときに実行する処理fi次に条件式の記述方法です。条件式の部分には基本的には、成功すれば0を返し、失敗したら0以外を返すコマンドを利用可能です。ここですべてを説明してしまうと話が長くなってしまい、チュートリアルの趣旨からだいぶ外れてしまいそうなので、よく使う方法(test)を説明しておきます。if文などの条件判定に特化したコマンドとして、testコマンドがあります。testコマンドは引数を比較したり、引数に指定したファイルの有無をチェックしたりする条件判定でよく使う判定に特化したコマンドです。シェルの実行パラメータとして引数が1個以上必要な場合、引数の個数をチェックして足りなかった場合に処理を停止したいといった場合があります。これをtestコマンドを用いて表現すると以下のようになります。name"fiさらにtestコマンドは簡略表現が用意されていて[]で条件式を囲むとtestコマンドに与えることになります。この簡略表現を利用すると上記は以下のように書き直すことができます。name"fiシェルスクリプトの多くはこの表現を使うことが一般的です。]"という表現はほかのプログラミング言語の"if()"にも似てますし、読みやすさの観点からも好まれています。]"のスペースは注意が必要です。ifの後、[の後、]の前には必ず半角スペースが必要です。$#というのは引数の数を保持している特殊変数です。than"を表していています。全体で「引数の数が1より少なかったら~」という条件式になっています。-ltなどの部分はほかにもたくさんバリエーションがあります。testコマンドで数値の比較の場合は以下のような演算子が利用可能です。文字列比較の場合は以下のような演算子が利用可能です。ファイルに関する判定の場合は以下のような演算子が利用可能です。than)コード解説ここまでの情報でソースコードを見ていきます。最初の部分は引数チェックです。name"fiこの部分は、条件判定を用いて引数の数をチェックしています。引数が1つ以上ない場合はシェルプログラムを継続することが出来ません。そのため、die関数を呼び出して停止します。die関数については後程解説します。以下の部分ではさらに引数を細かくチェックしています。この部分は引数に指定したバックアップ対象のファイルが存在するかどうかをチェックしています。]"の部分は第一引数で指定されたバックアップ対象のファイルが存在するかどうかをチェックして、存在すれば、変数target_file_nameに代入しています。ファイルが存在しない場合は、シェルプログラムを継続することが出来ません。die関数を呼び出して停止します。最後の部分はif文の入れ子になっています。]"という簡単なチェックで調べています。]がtrueの場合)と存在しない場合で処理を分岐しています。第2引数である$2が存在しなければ、以下の部分で日付形式のファイル名(変数backup_file_name)を指定します。+%Y%m%d%H%M%S`.tgzこの中の以下のコマンドは20140102030405のような日付+時刻の文字列を出力します。+%Y%m%d%H%M%S結果、全体で変数backup_file_nameの中には20140102030405.tgzという文字列の値が格納されます。第2引数である$2が存在した場合は、さらに過去に作成したバックアップファイルを上書きしてはいけないので、内側のif文の中ですでにファイルが存在しないかどうかをチェックします。]がtrueの場合)は、処理を停止します。