変数

他のシェルと同じように, $によって変数を扱います.

>_ echo My home directory is $HOME
My home directory is /home/tutorial

変数はダブルクオートのなかでは置換されますが, シングルクオートの中では置換されません.

>_ echo "My current directory is $PWD"
My current directory is /home/tutorial
>_ echo 'My current directory is $PWD'
My current directory is $PWD

他のシェルと違って, fishは変数を代入する構文を持ちません. 代わりに変数名とその値を引数にとる, setコマンドを持ちます.

>_ set name 'Mister Noodle'
>_ echo $name
Mister Noodle

(クオートに注意してください. もしこれがなければMisterNoodleは別々の引数として認識され, $nameは2つの要素を持つリストになります.)

他のシェルと違って, 変数は置換後に分割されることはありません.

>_ mkdir $name
>_ ls
Mister Noodle

bashでは上記コマンドで"Mister"と"Noodle"という2つのディレクトリが作られます. fishでは"Mister Noodle"という値を持った変数によって1つのディレクトリが作られます. つまりmkdirにはスペースを含んだ文字列の引数として渡されます. 他のシェルではリストという表現ではなく"配列"という用語が用いられます.