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