Bashで
echo ${!X*}
名前が「X」で始まる変数のすべての名前を出力します。
任意のパターンで同じものを取得することは可能ですか?名前に「X」が任意の位置に含まれている変数のすべての名前を取得しますか?
組み込みコマンドcompgenを使用します。
compgen -A variable | grep X
これはそれを行う必要があります:
env | grep ".*X.*"
編集:申し訳ありませんが、値の中からXも検索します。このバージョンは、変数名でXのみを検索します
env | awk -F "=" '{print $1}' | grep ".*X.*"
Paulがコメントで指摘しているように、ローカル変数も探している場合は、envをsetに置き換える必要があります。
set | awk -F "=" '{print $1}' | grep ".*X.*"
これにより、変数名でのみXが検索され、一致する変数名のみが出力されます。
set | grep -oP '^\w*X\w*(?==)'
または検索されたパターンを簡単に編集するため
set | grep -oP '^\w*(?==)' | grep X
または単に(おそらく覚えやすい)
set | cut -d= -f1 | grep X
変数名内のXを一致させたいが、name = value形式で出力する場合は、次のようにします。
set | grep -P '^\w*X\w*(?==)'
変数名内のXを一致させたいが、値のみを出力する場合は、次のようにします。
set | grep -P '^\w*X\w*(?==)' | grep -oP '(?<==).*'
最も簡単なのは
printenv |grep D.*=
唯一の違いは、変数の値も出力することです。
env | awk -F= '{if($1 ~ /X/) print $1}'