2009-02-04 26 views

Trả lời

41

Sử dụng lệnh compgen dựng sẵn:

compgen -A variable | grep X 
+3

(+1) Điều này cũng làm việc với các biến cục bộ. Compgen này đã được tiết lộ ngày hôm nay - Tôi nghĩ rằng tôi nên * nghiên cứu * tất cả các bash builtins ... –

6

này nên làm điều đó:

env | grep ".*X.*" 

Edit: xin lỗi, trông cho X vào giá trị quá. Phiên bản này chỉ trông cho X trong tên var

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

Như Phaolô chỉ ra trong các ý kiến, nếu bạn đang tìm kiếm các biến địa phương quá, env cần phải được thay thế bằng thiết lập:

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

Chỉ nhận các biến môi trường chứ không phải biến cục bộ. Mặc dù sử dụng "set" thay vì "env" có thể hoạt động. –

+0

Cảm ơn, tôi không biết về thiết lập, tôi thường "xuất khẩu" bất kỳ vars tôi quan tâm vì vậy tôi chỉ sử dụng env. – diciu

+1

thiết lập cũng in chức năng, không chỉ biến cục bộ và biến môi trường – zhaorufei

1

dễ nhất có thể để làm một

printenv |grep D.*= 

sự khác biệt duy nhất là nó cũng sẽ in ra giá trị của biến.

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

Tôi cũng cần có các giá trị. Chỉ cần xóa '$ 1' khỏi giải pháp của bạn, vấn đề của tôi đã được giải quyết. Cảm ơn. – jpbochi

3

này sẽ tìm kiếm X chỉ trong tên biến và sản lượng chỉ phù hợp với tên biến:

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

hoặc để chỉnh sửa dễ dàng hơn của mô hình tìm kiếm

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

hoặc đơn giản (có thể dễ dàng hơn để nhớ)

set | cut -d= -f1 | grep X 

Nếu bạn muốn kết hợp X trong tên biến, nhưng đầu ra trong name = hình thức giá trị, sau đó:

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

và nếu bạn muốn kết hợp X bên trong các tên biến, nhưng chỉ có giá trị đầu ra, sau đó:

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

điều này cần lưu ý rằng -P có thể yêu cầu bổ sung thư viện được cài đặt trên một số nền tảng cũ hơn – noonex

Các vấn đề liên quan