.titleBar { margin-bottom: 5px!important; }

fritzbox shell patternmatching

Dieses Thema im Forum "FRITZ!Box Fon: Modifikationen" wurde erstellt von sir-rion, 6 Feb. 2009.

  1. sir-rion

    sir-rion Neuer User

    Registriert seit:
    4 Nov. 2007
    Beiträge:
    15
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ich hab folgendes problem mit einem shell script
    PHP:
    #!/bin/sh
    var=1234aaaaaa5678
    echo ${var/4*5/}
    unter debian gibt mir das wie beabsichtigt 123678 aus
    meine fritz box sagt mir

    ./tmp: line 3: syntax error: Bad substitution


    (FRITZ!Box Fon WLAN 7170 Firmware-Version 29.04.67)

    kann mir jemand dabei helfen das zum laufen zu bringen oder ein äquivalentes script zu schreiben?
     
  2. Jano06

    Jano06 Neuer User

    Registriert seit:
    4 Dez. 2006
    Beiträge:
    41
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Nordlicht
    Versuch mal, ob die Substitution überhaupt geht ....

    Hi,

    teste mal:

    Code:
    #!/bin/sh
    
    var=1234aaaaaa5678 
    
    var1=${var%4*}
    var2=${var##*5}
    echo ${var1}${var2}
    
    Damit müsste man sehen, ob die Substitution überhaupt geht.
    Ich denke, das wird Shell-abhängig sein.


    LG

    J.
     
  3. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,919
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Kannst du eine andere Busybox (freetz) nutzen? Bei mir geht es:

    Code:
    BusyBox v1.12.4 (2009-01-18 14:51:32 CET) built-in shell (ash)
    Enter 'help' for a list of built-in commands.
    
    ermittle die aktuelle TTY
    tty is "/dev/pts/0"
    Console Ausgaben nicht umgelenkt
    /var/mod/root # var=1234aaaaaa5678
    /var/mod/root # echo ${var/4*5/}
    123678
    /var/mod/root #
    

    Jörg
     
  4. sir-rion

    sir-rion Neuer User

    Registriert seit:
    4 Nov. 2007
    Beiträge:
    15
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @Jano06
    das geht :)

    damit würd ich auch auf

    PHP:
    #!/bin/sh
    var=1234aaaaaaaaa5678
    echo ${var%4*}${var##*5}
    zurückfallen da dies funktioniert :)


    @MaxMuster

    nein ich möchte gerne nicht unnötig viel an der fritz box modden wir hängen zu dritt dahinter am internet und wir können alle nicht damit leben auch nur einen halben tag auf internet verzichten zu können nicht nur weil wir freaks sind sondern weil wir es berufsmäßig/studiumsbedingt benötigen... wenn ich 2 fritz boxen hätte hätt ich längst versucht da n debian oder was auch immer draufzuziehen
     
  5. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,919
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ist ja gut, wenn du eine Alternative hast. Ansonsten kann man (nur zur Vollständigkeit) auch eine neue Busybox nur dafür benutzen, auch ohne eine neue Firmware zu flaschen. Also z.B. eine andere busybox nach /var/tmp bringen und dann
    Code:
    /var/tmp/busybox sh <my_shell_script>
    
    (oder das Programm auf einen USB-Stick und das von da aus aufrufen...)

    Jörg
     
  6. sir-rion

    sir-rion Neuer User

    Registriert seit:
    4 Nov. 2007
    Beiträge:
    15
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    das geht natürlich

    aber es geht ja auch so :))

    falls es jemand haben mag mein scipt ist damit grade "fertig geworden"

    irc client für die fritz box

    Code:
    #!/bin/sh
    : ${2?"Usage: $0 ircserver nickname"}
    touch ./tmp
    (echo user shIRC hostname "$1" :shIRC user
    echo nick "$2"
    tail -f ./tmp &
    while read command
    	do case "$command" in
    	/join*) echo "joining">/dev/tty
    			set $command; currentchan="$2"
    			echo "${command#?}";;
    	/*) echo "${command#?}";;
    	*) echo "PRIVMSG $currentchan :$command"
    	esac
    done) | nc "$1" 6667 | while read response
    	do	case "$response" in
    	"PING "*) echo "PONG ${response#?????}" >> ./tmp;;#response with PONG and strip PING
    	*) echo ${response%%!*}${response#*PRIVMSG};#output with stripped userid
    	esac
    done