On Thu, 5 Feb 2015 14:19, Daniel Spannbauer wrote:
Moin,
ich kann ja dem Kernel bzw. dem System auf der Kommandozeile parameter mitgeben, splash=silent etc. pp.
Nun will ich einen Parameter selber setzen und auswerten.
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] while read param ; do # hier parameter verwurstung, ein parameter pro duchlauf done < $(tr ' ' '\n' </proc/cmdline) [/code] zur Verwurstung selber, grep und eval sind da helfer. [code] #$param hat aktuellen Parameter, s.o. # parameter OHNE '=' bekommen '=1' angehängt echo $param |grep -c '=' >/dev/null || param="$param=1" # BÖSE, nicht gut, such Dir 'ne andere Lösung # setzt param als shell variable eval $param [/code] Wenn Dich nur ein spezieller parameter interessiert, geht das auch etwas anders, hier nur die Verwurstung [code] case $param in MyParameter=*) eval $param;; *) ;; esac [/code] Anstelle von eval kann dann auch sed, oder bash selbst genommen werden [code] # Name ist hier "MyParameter", interesanter teil NACH '=' Variable=${param#MyParameter=} [/code] Wenn param="MyParameter=blubber", dann erhalten wir Variable="blubber" Komplett also: [code] #!/usr/bin/bash Variable='nix_da' for param in $(</proc/cmdline) ; do case param in MyParameter=*) Variable=${param#MyParameter=};; *) ;; esac done if [ "$Variable" = 'nix_da' ] ; then # MyParameter=.... nicht gesetzt else # MyParameter=... gesetzt! # Inhalt in $Variable fi [/code] Hinweis: falls MyParameter=.. mehrfach existiert, gilt nur das letzte Vorkommen Sind das die Hinweise die Du suchtest? - Yamaban