zshパラメーターを拡張するときは、文字列の先頭から一致する項目の数を削除してください。

zshパラメーターを拡張するときは、文字列の先頭から一致する項目の数を削除してください。

パラメーター拡張を使用すると、次の先行スペースを削除できます。

stripped_var=${original_var#[[:blank:]]}

##最小一致ではなく最大一致を許可することに慣れています#が、パターンを「空白1つ」から「空白数」に変換する方法が見つかりませんでした。

値からすべての先行スペースを削除するために複数の一致を許可する方法はありますかoriginal_var?理想的には、サブプロセス/サブシェルの起動を含まないソリューションを探しています。つまり、awk、sedなどのないソリューションを好むがパラメータ拡張がトリックを実行できない場合はそれもそうです)

ベストアンサー1

使用できる拡張グローバル演算子 x#:

x#
(設定にはEXTENDED_GLOBが必要です。)パターンxが0個以上一致します。この演算子は優先順位が高いです。 「12#」は「(12)#」ではなく「1(2#)」と同じです。繰り返すことができない項目の後に引用符がない '#'はエラーです。これには、KSH_GLOBパターンの一部である場合は空の文字列、パターンの後に「##」、または括弧が含まれます(例:「!(foo)#」)。無効で、 '*(!(foo)) ') に置き換える必要があります。

setopt extended_glob
stripped_var=${original_var##[[:blank:]]#}

おすすめ記事