パラメーター拡張を使用すると、次の先行スペースを削除できます。
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:]]#}