3
3

More than 5 years have passed since last update.

${name-word}と${name:-word}の違い

Last updated at Posted at 2013-10-10

${name-word}${name:-word} は両方変数 $name にデフォルト値を設定するのに使います。 $name が未定義の場合、両方とも word を返します。

% echo ${null-foo}  # $null は未定義だとする
foo
% echo ${null:-foo}
foo

違いは $name が空文字列の場合 ${name:-word}word を返す一方 ${name-word} が空文字を返すことです。

% empty=''
% echo ${empty-foo}

% echo ${empty:-foo}
foo

似たものに ${name+word}${name:+word} があります。こちらは変数 $name に値がある場合に、その値を上書きするものです。

% hoge=hoge
% echo ${hoge+foo}
foo
% echo ${hoge:+foo}
foo

違いは $name が空文字列だった場合の挙動です。

% empty=''
% echo ${empty+foo}
foo
% echo ${empty:+foo}

$name が未定義の場合は、両方空になります。

% echo ${null+foo}

% echo ${null:+foo}

参考

  • zshexpn(1) PARAMETER EXPANSION
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3