Birden çok uygulamayla çalışan posix uyumlu bir şekilde, tanımlanmış ortam değişkeni listesini değerleri olmadan nasıl yazdırabilirim ?
Bazı uygulamalarda (mksh, freebsd / bin / sh), sadece export
kendi başına kullanmak faturaya uyacaktır:
$ export
FOO2
FOO
Ancak diğer bazı uygulamalar için (bash, zsh, dash) export
de değeri gösterir. Bash ile, örneğin:
$ export
export FOO2='as df\
asdk=fja:\
asd=fa\
asdf'
export FOO='sjfkasjfd kjasdf:\
asdkj=fkajdsf:\
:askjfkajsf=asdfkj:\
safdkj'
$ printenv | sed -n l
FOO2=as\tdf\$
asdk=fja:\$
asd=fa\$
asdf$
FOO=sjfkasjfd kjasdf:\$
asdkj=fkajdsf:\$
\t:askjfkajsf=asdfkj:\$
safdkj$
Gibi diğer seçenekler env
veya printenv
seçenekleri yok en azından değil linux ve ben denedim freebsd platformlarda, değerler olmadan sadece değişken isimlerini yazdırmak için.
Awk / sed / etc boruları. veya listeyi parametre genişletme teknikleri (örneğin ${foo%%=*}
) ile kırpmak kabul edilebilir, ancak satırlara yayılabilen ve =
değerde boşluk ve boşluk içeren değerlerle çalışmalıdır (yukarıdaki örneğe bakın).
Belirli kabuk uygulamalarına özgü yanıtlar ilginçtir, ancak öncelikle uygulamalar arasında uyumlu olan bir şey arıyorum.
export -p
?
export -p
çünkü bu istediğiniz tüm POSIX mermilerinde tutarlı bir çıktı verecektir.
export -p
ilk gereksinime uymuyor - sadece değişken adları değersiz yazdırılıyor.
export -p
. Bu ayrışmayı yazmayacağım, çünkü genel durumda, değeri gibi bir değişkene sahip olmanız durumunda, uygun alıntı ayrıştırma da yapmak zorunda kalacaksınız hello\nexport var=value
. Biri birkaç tüm POSIX kabuklarda size tutarlı çıktı verecektir diğer komutlar olduğunu env
, ama bu çıkışı zor o yoksun beri ayrıştırma için export =
biraz.
export -p
, kabuğunda giriş için de uygun çıktı üretmek üzere çıktısı POSIX tarafından belirtilenle devam edin.