fishを使い始めたのですが、シェルスクリプトを書くときに文法が違うんですね。
すぐ慣れると思いますが、私が最初につまずいた部分をまとめました。
ANDとOR
fishでは、&&、||の代わりに、「; and」「; or」を使います。
【AND】
bashの場合:
command1 && command2
fishの場合:
command1; and command2
【OR】
bashの場合:
command1 || command2
fishの場合:
command1; or command2
大文字、小文字は区別しないので、
command1; AND command2
command1; OR command2
とも書けます。
シェル変数
変数に値をセットするのは「set」を使います。
bashの場合:
FOO="bar"
fishの場合:
set FOO "bar"
変数を削除する場合は「-e」オプションを使います。
set -e FOO
環境変数
環境変数にセットするのは「-x」。
bashの場合:
export FOO="bar"
fishの場合:「-x」オプションを使います。
set -x FOO "bar"
定義済みの変数を削除する場合は、シェル変数と同じ、「-e」を使って
set -e FOO
とします。
コマンドの実行
うっかり間違えやすいのがコマンドの実行でした。
bashの場合:バッククォート(`)、または $( ) で囲む
VAR=`whoami`
VAR=$(whoami)
fishの場合:ただ ( ) で囲むだけ。
VAR=(whoami)
ifの条件分岐
「fi」の代わりに「end」を使います。
bashの場合:
if test -f foo.txt; then
cat foo.txt
else
echo "not exists"
fi
fishの場合:
if test -f foo.txt
cat foo.txt
else
echo "not exists"
end
コメント