Hallo, Am Thu, 05 Feb 2015, Yamaban schrieb:
On Thu, 5 Feb 2015 14:19, Daniel Spannbauer wrote:
z.B. MeinParameter=123 Über /proc/cmdline komme ich ja an die ganzen Parameter ran. Nur: Wie kann ich die auf der Bash verwursten? Es gibt parameter mit nem Gleichheitsszeichen im Parameter, dann wieder welche ganze ohne Zuweisungen....
Irgendwie seh ich gerade den Wald nicht.....
Trennzeichen ist ein "Leerzeichen".
Wenn du einen Parameter pro Zeile möchtest, kannst do "tr ' ' '\n'" dafür benutzen, oder gleich eine "for" schleife nehmen, die will Leerzeichen. [code] for param in $(</proc/cmdline); do # hier parameter verwurstung, ein parameter pro duchlauf done [oder]
POSIX kompatibel (also ohne Bashism) geht das z.B. auch so: set -- $(cat /proc/cmdline); for param in "$@"; do echo "$param"; done Mit bashism: set -- $(< /proc/cmdline); for param; do echo "$param"; done Die 'for p in $(< /proc/cmdline )' Variante erscheint mir aber eleganter. Auswerten würde ich das übrigens per case und z.B. so: case "$param" in MeinParameter*) IFS="=" set -- "$param"; MeinValue="$2"; ;; esac oder eher noch so (Bashism?): case "$param" in MeinParameter=*) MeinValue="${param#*=}"; ;; esac Beispiel zu letzterem: $ ( for p in $(</proc/cmdline); do echo "$p => ${p%%=*} = ${p#*=}"; done; ) root=/dev/disk/by-label/ROOT_SSD_1 => root = /dev/disk/by-label/ROOT_SSD_1 noresume => noresume = noresume splash=native => splash = native showopts => showopts = showopts edd=off => edd = off pcsp=enable=1 => pcsp = enable=1 elevator=deadline => elevator = deadline vga=normal => vga = normal Mit ${p%=*} bekommst du den Teil vor dem ersten = eines Parameters, mit ${p#*=} den danach, mit ${p##*=} den nach dem letzten = (sofern mehrere vorkommen). Ich hab seit Jahren das hier in meiner ~/.bashrc # alias basename='echo ${1##*\/}' # alias dirname='echo ${1%\/*}' Ja, auskommentiert, aber nachgucken tu ich's öfters :) Schema ist: vor letztem Trenner: ${ VARIABLE % TRENNER * } vor erstem Trenner: ${ VARIABLE %% TRENNER * } nach letztem Trenner: ${ VARIABLE ## * TRENNER } nach erstem Trenner: ${ VARIABLE # * TRENNER } $ ( p="foo=bar=baz=bonk";
echo ${p%=*} echo ${p%%=*} echo ${p##*=} echo ${p#*=} ) foo=bar=baz foo bonk bar=baz=bonk
HTH, -dnh -- 266: Allradantrieb Allradantrieb bedeutet, dass man dort stecken bleibt, wo der Abschleppwagen nicht hinkommt. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org