パイプラインを使用した実行変数の作成

パイプラインを使用した実行変数の作成

次のテストケースを使用しようとしています。

countAlpha=10;bob=alpha; echo $(echo $bob | sed 's/[a-z]/\U&/; s/^/\$count/') $countAlpha

次の結果が生成されます。

$countAlpha 10

私が望むのは、パイプラインを使用して他の実行で使用できる変数を生成できるように$countAlphaを実行/拡張する方法を見つけることです。したがって、意図された目標は次のとおりです。

10 10

出力として(1つのライナーが実際に正しい値を持っていることを確認するための完全性チェックで、変数は後でエコーされますが、最終結果には使用されません。そうでなければ尋ねる必要はありません)。残念ながら、これは常に数値ではなく、bashの追加をオフセットとして使用することはここで$((i + x))を助けません。

Bashから脱出する方法(例:脱出レベルによっては「」と「」)がいくつかあることはわかっていますが、その逆を行う方法はわかりません。よろしくお願いします。

答え1

だからもう少し悩んだ最後に答えを見つけて、もう一度共有したいと思いました。

countAlpha=10;bob=alpha; echo $(eval echo $(echo $bob | sed 's/[a-z]/\U&/; s/^/\$count/')) $countAlpha
10

重要なのは、を使用してecho $(eval echo $(...))変数を解釈し、echoallを使用して変数を印刷することです。

したがって、明確に言えば、これを実行するために使用したい場合は、フォームを使用して$(eval echo $(...))値を印刷しますecho $(eval echo $(...))

連想配列に対するコメントに感謝しますが、この場合は上記のように直接実行することをお勧めします。

関連情報