Fishの基礎 - 変数

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要



環境変数

環境変数とは、システム全体の動作に関連する値が設定されている(もしくはユーザが任意で設定する)変数であり、
環境変数として設定されている変数名とその値はenvコマンドで確認できる。

Fishの特殊変数名 Bashの特殊変数名 自動的に設定される値
count $argv $# 実行時に指定された引数の数を表す変数。
「$ ./sample.sh AAA BBB CCC」を実行した場合、sample.sh内で変数$#を参照するとその値は3となる。
$argv $@
$*
シェルスクリプト実行時またはsetコマンド実行時に指定された全パラメータが設定される変数である。
argv[0] $0 実行時のコマンド名が設定される変数である。
./sample.sh(/home/user/sample.sh)を実行した場合、/home/user/sample.shが設定される。
$argv[1] - $argv[n] $1 - $n シェルスクリプト実行時に指定した各パラメータの値が設定される変数である。
1番目に指定した引数は$1、2番目に指定した引数は$2、n番目に指定した引数は$nに設定される。

Bashでは、10番目以降の引数参照時は${10}のように{}を使用する必要がある。
これは、$10を$1 "0"のように、シェルに誤った解釈をされることを防ぐためである。
$status $? 直前に実行されたコマンドの終了ステータスが設定される変数。
シェルスクリプトでは、exitコマンドに与えた引数が終了ステータスとなる。

例えば、exit 2と記述する場合、そのシェルスクリプトの終了ステータスは2となる。
また、関数のreturnの場合も同様に、指定した引数がその関数の終了ステータスとなる。

なお、exitコマンドの値は0〜255である。
$last_pid $! バックグラウンドで実行されたコマンドのプロセスIDが設定される変数。
sleep 100 &のように&を付加してバックグラウンドで実行する時、
特殊変数$!には、sleepコマンドのPID(プロセスID)がセットされる。
なし $- setコマンドで設定されたフラグまたはシェルの起動時に指定されたフラグの一覧が設定される変数。
$fish_pid $$ コマンド自身のPID(プロセスID)が設定される変数。

例えば、シェルスクリプト内で作成するファイル名に変数$$を指定するというものがある。
例 : tempfile_$fish_pid.txt

同一シェルスクリプトを同時実行する場合、シェルスクリプト実行ごとに作成するファイル名を変更できるため、
各シェルスクリプトが同時に同一ファイルに出力することを防止できる。
なし $LINENO この変数を使用している行の行番号が設定される変数。
なし ${PIPESTATUS[@]} パイプで連結した各コマンドの終了ステータスが設定される配列。
この変数を使用することで、パイプの先頭や途中にあるコマンドの終了ステータスを参照することができる。
ただし、bashのみ使用できる。
なし $TZ タイムゾーンが設定されている変数。
変更することは無いと考えるが、例えば、古いUNIX環境において昨日の日付を取得する等、一時的に変更する場合がある。
$PWD カレントディレクトリのパスが設定されている変数。
Bashにおいて、PS1='[${PWD}]$ 'のように特殊変数PS1に設定する時、プロンプトにカレントディレクトリが表示されるようになる。
$IFS デリミタ(区切り文字)として使用される値が設定されている変数。
初期値において、タブ、スペース、改行が設定されている。

繰り返し文の値リストの区切り、readコマンドで取得する値の区切り等に使用される。


root権限でシェルを実行してるかどうかを判別するには、以下の条件分岐を記述する。

 #!/usr/bin/env fish
 
 if fish_is_root_user
    # ...略
 end