Schleifen Sie den Bash-Befehl, bis die Ausgabe keine Zeichenfolge mehr enthält

1

Wie kann man den bashBefehl so lange wiederholen, bis die Ausgabe keine Zeichenfolge mehr enthält, und dann die Zeit drucken, zu der die Ausgabe der Schleife gestoppt wurde? watchBefehl ist nicht verfügbar.

machen
quelle
Was ist Ihre Definition von "keine Zeichenfolge enthalten"? Meinen Sie damit, dass die Ausgabe nur Zahlen zurückgibt?
Carlos
eine gegebene Zeichenfolge.
Machen Sie den

Antworten:

8

Hier ist ein Beispiel für das Laufen date +%S, bei dem alle halbe Sekunde ein Teil der aktuellen Zeit als Sekunden ausgegeben und unter bestimmten Bedingungen angehalten wird (siehe unten):

while true; do
  str=`date +%S`
  echo Output: $str
  # Use the below when you want the output not to contain some string
  if [[ ! $str =~ 5 ]]; then
  # Use the below when you want the output to contain some string
  # if [[ $str =~ 7 ]]; then
    break
  fi
  sleep .5
done
echo Finished: `date`

Die bedingung aufhören:

  • Wenn Sie nur diese Zeile auskommentieren:

    if [[ ! $str =~ 5 ]]; then

    es wird geloopt, solange 5es in der Ausgabe existiert (zB während von 50bis 00)

  • Wenn Sie nur diese Zeile auskommentieren:

    if [[ $str =~ 7 ]]; then

    Es wird solange wiederholt, bis 7es in der Ausgabe existiert (dh bis die aktuellen Sekunden 07, 17, 27, 37, 47 oder 57 sind).

Beispielausgabe für nicht enthaltenen String ( 5in diesem Fall):

Output: 56
Output: 57
Output: 57
Output: 58
Output: 58
Output: 59
Output: 59
Output: 00
Finished: Thu Mar 1 20:16:00 EST 2012

Beispielausgabe für die Aufnahme eines Strings ( 7in diesem Fall):

Output: 08
Output: 09
Output: 09
Output: 10
Output: 10
Output: 11
Output: 11
Output: 12
Output: 12
Output: 13
Output: 13
Output: 14
Output: 14
Output: 15
Output: 15
Output: 16
Output: 16
Output: 17
Finished: Thu Mar 1 19:58:17 EST 2012
icyrock.com
quelle
Könnten Sie das ändern, bis es die Zeichenfolge nicht mehr enthält?
Machen Sie den
Sicher - benutze if [[ ! $str =~ 5 ]]; thenstattdessen einfach meine Bearbeitung.
icyrock.com
bash-2.05 $ bedingter binärer Operator erwartet Zeile 4: Syntaxfehler in der Nähe des unerwarteten Tokens `= ~ 'if [[! $ str = ~ 'NICHT erfolgreich']]; dann
mache den
Klar, ich helfe gerne!
icyrock.com
Wissen Sie, wie Sie den obigen Fehler beheben können? Ich denke, es hängt mit der Version 2.05 von Bash zusammen, die auf diesem System installiert ist.
Machen Sie den