awk im sh-script mit Variablen will nicht.



  • also ich habe ein Bourne-Shellscript, bei dem ich die PID eines anderen Prozesses herausfinden möchte. Das Ganze dachte ich mir so:

    # ###################################
    # find out if controlclient is active
    clientStat=`busybox ps | awk '/$clientprg/ && !/awk/ {print $1}'` 
    
    # ###################################
    # get client state
    clientup="down"
    if [ "$clientStat" != "" ]; then
      clientup="up"
    fi
    

    schreibe ich den Namen des Programms in den awk-Suchstring, habe ich keine Probleme. Die Variablen wird allerdings von awk fehlinterpretiert.

    Ich habe schon versucht, "" zu nutzen, aber auch den awk-string in eine extra Variablen zu legen. Nichts funktionierte.

    Wie kann ich das jetzt beheben?



  • Du machst das auch falsch, du hast deine Shell-Variable in '' gepackt, dadurch wird diese nicht substituiert. Beachte auch, dass awk seine Strings in Quotes will.
    Richtig ist:

    # ###################################
    # find out if controlclient is active
    clientStat=`busybox ps | awk "/$clientprg/ && !/awk/ {print \"$1\"}"`
    
    # ###################################
    # get client state
    clientup="down"
    if [ "$clientStat" != "" ]; then
      clientup="up"
    fi
    

Anmelden zum Antworten