2009-02-04 6 views

Répondre

41

Utilisez la commande builtin compgen:

compgen -A variable | grep X 
+3

(+1) Cela fonctionne également avec les variables locales. Ce compgen a été la révélation d'aujourd'hui - je pense que je devrais * étudier * tout bash builtins ... –

6

Cela devrait le faire:

env | grep ".*X.*" 

Edit: désolé, qui recherche X la valeur aussi. Cette version ne recherche que X au nom var

env | awk -F "=" '{print $1}' | grep ".*X.*" 

Comme Paul souligne dans les commentaires, si vous cherchez des variables locales aussi, a besoin d'env pour être remplacé par set:

set | awk -F "=" '{print $1}' | grep ".*X.*" 
+1

N'obtient que des variables d'environnement, pas des variables locales. Bien que l'utilisation de "set" au lieu de "env" pourrait fonctionner. –

+0

Merci, je ne savais pas à propos de l'ensemble, je "exporte" habituellement toutes les vars qui m'intéressent donc je n'utilise que env. – diciu

+1

Définir également la fonction d'impression, pas seulement les variables locales et les variables d'environnement – zhaorufei

1

pourrait être de Easiest faire

printenv |grep D.*= 

la seule différence est qu'il imprime aussi les valeurs de la variable.

1
env | awk -F= '{if($1 ~ /X/) print $1}' 
+0

J'avais besoin d'obtenir les valeurs aussi. En supprimant simplement '$ 1' de votre solution, mon problème a été résolu. Merci. – jpbochi

3

Cette recherchera X uniquement dans les noms de variables et de sortie des noms de variables correspondant uniquement:

set | grep -oP '^\w*X\w*(?==)' 

ou pour faciliter l'édition de modèle recherché

set | grep -oP '^\w*(?==)' | grep X 

ou simplement (peut-être plus facile à retenir)

set | cut -d= -f1 | grep X 

Si vous voulez faire correspondre X à l'intérieur des noms de variables, mais la sortie en nom = forme de valeur, alors:

set | grep -P '^\w*X\w*(?==)' 

et si vous voulez faire correspondre X à l'intérieur des noms de variables, mais uniquement la valeur de sortie, puis:

set | grep -P '^\w*X\w*(?==)' | grep -oP '(?<==).*' 
+0

cela doit noter que -P peut nécessiter l'installation d'une bibliothèque supplémentaire sur certaines anciennes plates-formes – noonex

Questions connexes