コマンドの説明
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
まとめ
パラメータ展開についてまとめました。
コメント