パラメータ展開 ${str:+hoge} zsh

コマンドの説明

zshはsetした値を${<値>}で展開することができます。

使い方

a="hoge"
echo ${a}  # hoge

オプション

${+a}
値がセットされていれば1、そうでなければ0を返す

${a-<str>}
値がセットされていなければ<str>を返す

${a:-<str>}
値がセットされていないか空であれば<str>を返す

${a+<str>}
値がセットされていれば<str>返す

${a:+<str>}
値がセットされているか空であれば<str>返す

${a=<str>}
値がセットされていなければ値が<str>に入れ替わる。

${a:=<str>}
値がセットされていないか空であれば値が<str>に入れ替わる。

${a::=<str>}
aがどんな値でも<str>に入れ替わる。

${a#<pattern>}
<pattern>とマッチする文字列を削除する(先頭から・最少マッチ)

${a##<pattern>}
<pattern>とマッチする文字列を削除する(先頭から・最大マッチ)

${a%<pattern>}
<pattern>とマッチする文字列を削除する(末尾から・最少マッチ)

${a%%<pattern>}
<pattern>とマッチする文字列を削除する(末尾から・最大マッチ)

${a:#<pattern>}
aが<pattern>と等しいとき削除する

${a:^<array>}
aと<array>をパッキングします。aの配列の長さに合わせます。

${a:^^<array>}
aと<array>をバッキングします。長い方の配列の長さに合わせます。

${a:<start>:<length>}
<start>から<length>の長さの文字列を返す(<length>は省略可)

${a/<pattern>/<str>}
aにある最初の<pattern>を<str>に置換する

${a//<pattern>/<str>}
aにあるすべての<pattern>を<str>に置換する

${a:/<pattern>/<str>}
aが<pattern>と等しいとき<str>に置換する

${#a}
文字列の長さを返す

${^a}
例)a=(a b)のとき、AA{^a}BBは展開されて(AAaBB AAbBB)になる

サンプル

パスから拡張子を削除する

a="/home/hoge.txt"
echo ${a%.*}  # /home/hoge

まとめ

パラメータ展開についてまとめました。

参考文献

ZSH - Documentation

コメント

タイトルとURLをコピーしました