Liste aller Umgebungsvariablen in busybox

Umgebungsvariablen mit multiline Werte verwirren können env's-Ausgabe:

# export A="B
> C=D
> E=F"
# env
A=B
C=D
E=F
TERM=xterm
SHELL=/bin/bash
USER=root
MAIL=/var/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/root
LANG=en_US.UTF-8
PS1=\h:\w\$
SHLVL=1
HOME=/root
LOGNAME=root
_=/usr/bin/env

In diesem Fall habe ich kann nicht verwenden Sie einfach awk -F= extrahieren Sie alle Namen, weil es zeigt falsche Namen C und E:

# env | awk -F= '{print $1}'
A
C
E
TERM
SHELL
USER
MAIL
PATH
PWD
LANG
PS1
SHLVL
HOME
LOGNAME
_

Dann habe ich herausgefunden, dass env unterstützt Flagge -0 zu Ende jeden Ausgang mit 0 byte anstatt "newline", also mit sed ich könnte schneiden Sie die Werte in bash:

# env -0 | sed -e ':a;N;$!ba;s/\([^=]\+\)=\([^\x00]*\)\x00/\1\n/g'
A
TERM
SHELL
USER
MAIL
PATH
PWD
LANG
PS1
SHLVL
HOME
LOGNAME
_

Aber die BusyBox-version von env nicht unterstützt Flagge -0. Gibt es einen anderen Weg, es zu tun?

  • Sind Sie offen, um mit einer anderen scripting-Sprache, um die Arbeit zu tun, wie python -c 'import os; print "".join(x + "\n" for x in os.environ),' oder perl -le 'for (keys %ENV) { print $_ }' oder brauchen Sie beschränken sich auf einen minimalen Satz von shell-tools?
  • Mit Python wäre es zu einfach 🙂 Hier kann ich verwenden BusyBox nur.
InformationsquelleAutor spatar | 2012-06-22
Schreibe einen Kommentar