ubuntuusers.de

IF-Anweisung und Shell Commands

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

BoomerBoss

Anmeldungsdatum:
23. Juni 2007

Beiträge: 34

Wohnort: Viersen

Hallöchen,

ich bin schon seit einer Stunde im Internet am Stöbern, habe aber keine Lösung gefunden.

Ich möchte praktisch folgene If-Abfrage realisieren:

wenn (screen -r | grep string) leer
     dann
        Befehl
ende

Ich habe schon alle möglichen Sachen ausprobiert, hatte aber noch keinen Erfolg.

pinguino

Avatar von pinguino

Anmeldungsdatum:
6. Februar 2007

Beiträge: 732

Wohnort: BW

Bemerkung: Ich weiß es nicht, was das Prog "Screen" macht aber ...

if [[ "` screen -r | grep string `" =~ [[:blank:]] ]]

then

Befehl ...

fi
 

Onli Team-Icon

Ehemalige
Avatar von Onli

Anmeldungsdatum:
1. August 2005

Beiträge: 6941

Schrittweise:

1
2
3
4
5
6
#!/bin/bash
if [[ -z "$(screen -r | grep string)" ]];then
    echo "leer"
else
    echo "voll"
fi

Gruß

PS: gibt screen -r denn immer dann nichts zurück wenn gewünscht?

BoomerBoss

(Themenstarter)

Anmeldungsdatum:
23. Juni 2007

Beiträge: 34

Wohnort: Viersen

Wenn ich wissen will, obs eine Session mit dem Namen bla gibt, dann gebe ich ein "screen -r | grep bla". Wenns die Session gibt, dann gibt screen die passende Zeile aus, ansonten nichts.

Danke für eure Hilfe, ich werde das gleich ausprobieren ☺

Ok hat nicht geklappt.

#!/bin/bash
echo "Starting Radio-Recorder..."

echo "Station 1: 1Club.fm Miami House Channel; club"
if [[ -z "$(screen -r | grep club)" ]];then
      screen -mdS club streamripper http://66.103.27.11:12600 --xs2 -s -d ./1Club_Miami/
fi

echo "Station 2: 102.8 The Hawk; hawk"
if [[ -z "$(screen -r | grep hawk)" ]];then
      screen -mdS hawk streamripper http://64.62.194.49:1003 --xs2 -s -d ./TheHawk/
fi

echo "Station 3: .977 The Hitz; hitz"
if [[ -z "$(screen -r | grep hitz)" ]];then
      screen -mdS hitz streamripper http://scfire-mtc-aa03.stream.aol.com:80/stream/1074 --xs2 -s -d ./977Hitz/
fi

echo "Radio-Recorder successfully started!"

Seht ihr wo mein Fehler liegt?

Die Fehlermeldung lautet:

blabla@ubuntu-server:~/files/Radio$ sh record1.sh
Starting Radio-Recorder...
Station 1: 1Club.fm Miami House Channel; club
record1.sh: 8: [[: not found
Station 2: 102.8 The Hawk; hawk
record1.sh: 14: [[: not found
Station 3: .977 The Hitz; hitz
record1.sh: 20: [[: not found
Radio-Recorder successfully started!

pinguino

Avatar von pinguino

Anmeldungsdatum:
6. Februar 2007

Beiträge: 732

Wohnort: BW

versuche mit meiner Methode. Ich sehe, daß du keine Quotes bei:

grep 'string'

gesetzt hast

pinguino

Avatar von pinguino

Anmeldungsdatum:
6. Februar 2007

Beiträge: 732

Wohnort: BW

OK. Ich habe ein bißchen mit Bash geübt und folgendes funktioniert ohne Probleme. Du kannst das anpassen:

#!/bin/bash

var=` echo "qwwe qzdqwz" |  grep -o 'test'`

echo "$var"

if [[ "$var" =~ ^[[:blank:]]*$  ]]

then

echo "OK"

else

echo "NOK"

fi

BoomerBoss

(Themenstarter)

Anmeldungsdatum:
23. Juni 2007

Beiträge: 34

Wohnort: Viersen

Danke für deine Hilfe pinguino. Das Skript klappt endlich.

#!/bin/bash
echo "Starting Radio-Recorder..."

if [ -z `screen -list |  grep -o 'club'` ]
   then
      screen -mdS club streamripper http://66.103.27.11:12600 --xs2 -s -d ./1Club_Miami/
      echo "1Club.fm Miami House Channel started"
   else
      echo "1Club.fm Miami House Channel already existing"
fi

if [ -z `screen -list |  grep -o 'hawk'` ]
   then
      screen -mdS hawk streamripper http://64.62.194.49:1003 --xs2 -s -d ./TheHawk/
      echo "102.8 The Hawk started"
   else
      echo "102.8 The Hawk already existing"
fi

if [ -z `screen -list |  grep -o 'hitz'` ]
   then
      screen -mdS hitz streamripper http://scfire-mtc-aa03.stream.aol.com:80/stream/1074 --xs2 -s -d ./977Hitz/
      echo ".977 The Hitz started"
   else
      echo ".977 The Hitz already existing"
fi

echo "done..."

Onli Team-Icon

Ehemalige
Avatar von Onli

Anmeldungsdatum:
1. August 2005

Beiträge: 6941

Dein altes Skript mit [[ hätte auch funktioniert, du hättest das Skript nur nicht mit sh aufrufen dürfen. [[ sind bash-builtins, die sh kann damit nichts anfangen.

Antworten |