$VAR
文字列が含まれている場合は、文字列をピリオドに分割して次の配列を作成できることを知っています。
% VAR=$ZSH_VERSION
% parts=(${(s:.:)VAR})
% printf '%s\n' $parts
5
0
7
たとえば、at 文字の値を ASCII コード 0 から分離するには、in フラグの間に:
何を入れる必要がありますか?(s::)
$VAR
私は私が考えることができるすべてを試しました。例えば
% VAR=$'5\0000\0007'
% parts=(${(s:\000:)VAR})
% printf '%s\n' $parts
5^@0^@7
これらのどれも機能しません。
答え1
p
別のフラグを作成するには、フラグを使用する必要があります。拡張フラグ(下p
)はエスケープシーケンスを識別します。
$ printf '%s\n' ${(ps:\0:)VAR}
5
0
7
または、次の略語を使用します。
printf '%s\n' ${(0)VAR}
空の要素を保持します。
printf '%s\n' "${(0@)VAR}"
ただし、出力に末尾の要素を追加して常に最後の空の要素を取得するfind ... -print0
ため、fromの出力には使用できません。\0