🍣

Nushellの変数について

2022/12/04に公開

変数

mutable(変更可能)な変数

mutコマンドを使って宣言と初期化を行います。初期値がないとエラーとなります。

mut x = 0
$x = $x + 1
$x
1

immutable(変更不可)な変数

letコマンドを使って宣言と初期化を行います。初期値がないとエラーとなります。次のように、宣言後に値を変更するとエラーとなります。

let x = 0
❯ $x = $x + 1
Error: nu::shell::assignment_requires_mutable_variable (link)

  × Assignment to an immutable variable.

scopeとshadow

(1)でimmutableな変数宣言して0で初期化します。次のブロックで再度宣言することで上書きとなります。ただ(2)のスコープ内のみ有効なため、(3)での変数の値は変更されません。

❯ do {
∙ let x = 0 # (1)
∙ {
∙   let x = $x + 10 # (2)
∙ }
∙ print $x # (3)
∙}
<Closure 73>
0

環境変数

環境変数(USER:ユーザ名,PWD:カレントディレクトリなど)は変数$envで管理されています。

$env.PWD

特殊変数

  • $in
    パイプ中のデータ全体を指す。
  • $nothing
    意味のないnothingを返す。ブロックで何も返さないことを明示する。
  • $env.NU_LIB_DIRS
    Nushellスクリプトの格納場所を保持しています。デフォルトは$HOME/.config/nushell/scriptsとなっています。
  • $env.NU_PLUGIN_DIRS
    Nushellプラグインの格納場所を保持しています。デフォルトは$HOME/.config/nushell/pluginsとなっています。

Discussion