Fishの基礎 - 条件分岐
概要
if文とは、条件付きコマンドを実行するためのシンタックスである。
if文
<コマンド 1>が実行された後、終了ステータスが0の場合は<コマンド 真1>が実行される。
終了ステータスが0以外の場合かつelse句が指定された場合は<コマンド 偽>が実行される。
条件には、andまたはorを使用することができる。
最後に終了したコマンドの終了ステータスは、変数$statusを使用してアクセスすることができる。
if <コマンド 1>
<コマンド 真1>
else if <コマンド 2>
<コマンド 真2>
else;
<コマンド 偽>
end
以下の例では、foo.txtファイルが存在して、かつ、通常のファイルであればfoo.txt existsと表示する。
そうでなければ、bar.txtファイルが存在して、かつ、通常のファイルであればbar.txt existsと表示する。
両方のファイルが存在しない場合は、foo.txt and bar.txt do not existと表示する。
if [ -f foo.txt ]
echo "foo.txt exists"
else if [ -f bar.txt ]
echo "bar.txt exists"
else
echo "foo.txt and bar.txt do not exist"
end
# []コマンドではなく、testコマンドを使用する場合
if test -f foo.txt
echo "foo.txt exists"
else if test -f bar.txt
echo "bar.txt exists"
else
echo "foo.txt and bar.txt do not exist"
end
以下の例では、foo.txtファイルが通常のファイルで読み取り可能な場合、foo.txt exists and is readableと表示している。
if [ -f foo.txt ]; and [ -r foo.txt ]
echo "foo.txt exists and is readable"
end
# []コマンドではなく、testコマンドを使用する場合
if test -f foo.txt; and test -r foo.txt
echo "foo.txt exists and is readable"
end
and文
<コマンド 1>; and <コマンド 2>
and文は、直前のコマンドが成功した($statusが0を返す)場合において、コマンドを実行するために使用する。
whileブロックやifブロックの条件の一部として使用することができる。
and文は、それ自身は現在の終了ステータスを変更しないが、実行されるコマンドにより変更される可能性がある。
最後に終了したフォアグラウンドコマンドの終了ステータスは、常に$status変数を使用してアクセスすることができる。
以下の例では、makeコマンドを実行して、ビルドに成功する場合は、makeコマンドの終了ステータスは0になりプログラムがインストールされる。
いずれかのステップでビルドが失敗した場合は、終了ステータスが1になり、make cleanコマンドが実行されて、ビルドプロセスで作成されたファイルが削除される。
make; and make install; or make clean
or文
<コマンド 1>; or <コマンド 2>
or文は、直前のコマンドが失敗した(0以外の$statusを返す)場合において、コマンドを実行するために使用する。
andやwhileブロックの条件の一部として使用することができる。
or文は、それ自身は現在の終了ステータスを変更しないが、実行されるコマンドにより変更される可能性がある。
最後に終了したフォアグラウンドコマンドの終了ステータスは、常に$status変数を使用してアクセスすることができる。
以下の例では、makeコマンドを実行して、ビルドに成功する場合は、makeコマンドの終了ステータスは0になりプログラムがインストールされる。
いずれかのステップでビルドが失敗した場合は、終了ステータスが1になり、make cleanコマンドが実行されて、ビルドプロセスで作成されたファイルが削除される。
make; and make install; or make clean