zshでは、小文字のUUIDが欲しいとします。 uuidgen
大文字を返すので、次のようにできます。
export MY_UUID=`uuidgen` # get uppercase UUID
export MY_UUID=${MY_UUID:l} # convert to lowercase
しかし、私が本当に欲しいものは:
${`uuidgen`:l} # does not work!
変数も必要ありません。ただ出力するだけです。コマンド出力をすぐに取得して小文字に置き換える方法が見つからなかったため、この変数を作成しました。
1つのステップでコマンドの小文字の出力を取得できる構文はありますか?
答え1
変数がなくても構いません。あなたはできます:
echo ${(L)$(uuidgen)} # nested parameter expansion
または:
print ${$(uuidgen):l} # history modifiers
Webページを参照:
14.3.2 ルール
- 入れ子になった置換複数の入れ子になった${...}フォームがある場合、置換は内側から外側に行われます。
(man zshexpn
これは明らかです):
上記の name の代わりにタイプ ${...} のパラメーター式または $(...) タイプのコマンド置換を使用する場合は、最初に展開され、その結果が name の値であるかのように使用されます。したがって、入れ子になった操作を実行することが可能です。 ${${foo#head}%tail} は、tail' の削除中に $foo 値を置き換えます
head' and
。 $(...)形式は通常、後述のフラグで使用されます。 zshparam(1) の配列パラメーターで説明されているように、パラメーター拡張の各名前またはネストされた ${...} の後には、添字式が続くこともあります。
次のコマンドラインを使用してインポートします。
$ LESS=+'/If a .* type parameter' man zshexpn
そして記録修飾子拡張(${ … :l}
)の場合(強調)zsh ドキュメント(以下の抜粋)man zshexpn
同じテキストが含まれています。
14.1.4修飾子オプションの単語の表示の後に、それぞれの前に「:」が続く次の修飾子の1つ以上のシーケンスを追加できます。これらの修飾語ファイル名の生成とパラメータ拡張の結果も処理します。