2017-04-25 4 views
2

Ich habe ein grundlegendes Shell-Skript gemacht, das nach einer Datei Existenz sucht. Es kann einen Parameter (optional) für das Schlafintervall erhalten. Wenn ich keine gebe, ist der Standardwert 60 Sekunden.Schlafintervall in Shell-Skript

Hier ist mein Code:

#!/bin/bash 

minutes=60 
if [ "$#" -eq 1 ]; then 
re='^[0-9]+$' 
if ! [[ "$1" =~ re ]]; then 
    echo $1 is not a number! 
    exit 1 
fi 
else minutes=$1*60 
fi 

while [ ! -f uj_aru ] 
do 
last | grep Apr 
sleep "$minutes" 
done 

Nach läuft das ich diesen Fehler:
sleep: invalid time interval '*60'

ich hier denke, ist ein kleiner Fehler mit den Variablen, aber ich didn‘ Es gelingt mir, es herauszufinden.

+3

Ändern Sie 'minutes = $ 1 * 60' in' minutes = $ (($ 1 * 60)) ' – user000001

+0

Ist es für die Autocheck-Datei alle 60 Sekunden erforderlich? – Alex

+0

Danke, es funktioniert! :) –

Antwort

5

Sie machen keine Arithmetik auf diese Weise. Sie müssen arithmetic evaluation mit $((..)) als

minutes=$(($1*60)) 

Der Fehler zu tun ist, weil Sie eine wörtliche Zeichenfolge eingegeben sleep sind vorbei, die es nicht mag.

Verwandte Themen