Ich frage mich, wie ich mein Shell-Skript Schlaf für die Summe meiner Variablen machen kann, danke!Sleep-Befehl in SH mit Variablen
#!/bin/sh
echo hello1
a=6
b=2
c=3
d = $a+$b+$c
sleep $d
echo hello2
Ich frage mich, wie ich mein Shell-Skript Schlaf für die Summe meiner Variablen machen kann, danke!Sleep-Befehl in SH mit Variablen
#!/bin/sh
echo hello1
a=6
b=2
c=3
d = $a+$b+$c
sleep $d
echo hello2
Sie können mit $((...))
Arithmetik:
d=$(($a + $b + $c))
Versuchen Sie dieses Skript:
#!/bin/bash
echo "hello1";
a=6;
b=2;
c=3;
d=$(($a+$b+$c));
sleep $d;
echo "hello2";
Wie andere schon angedeutet haben, die moderne (*) Ansatz ist #!/bin/bash
zu verwenden oder sogar mit ihrer integrierten Unterstützung von arithmetischen Operationen mit n=$(($a+$b+$c)
.
Wie Sie explizit #!/bin/sh
erwähnt haben, hier ist eine Lösung, die für Sie arbeiten wird.
#!/bin/sh
echo hello1
a=6
b=2
c=3
d=`echo "$a+$b+$c" | bc`
sleep $d
echo hello2
Der Schlüsselteil einfachen Anführungszeichen für Befehls Substitution, und Senden der math Argumente unter Verwendung von dem bc
Befehl ausgewertet werden, der Rohrschale unter Verwendung von (|
) Funktionalität: ie
d=`echo "$a+$b+$c" | bc`
| | | | | -> bc is a "basic" calulator
| | | | -> pipes pass std-out from preceding cmd, to std in fo following cmd
| | | -> a string to be passed to `bc` for arthimetic evaluation
| | -> echo writes its output to std-out
| -> = assigns output of cmd=substition to var $d
(*) moderne in Schalen bedeutet 1986 und später ;-)
IHTH
Sie können
verwendena=6
b=2
c=3
((d=a+b+c))
Ich habe das versucht, aber ich bekomme Syntaxfehler? sleep.sh: Zeile 6: Unerwarteter EOF beim Suchen nach passendem ') ' sleep.sh: Zeile 9: Syntaxfehler: unerwartetes Ende der Datei – KG2005
Ignoriere den letzten Kommentar^Dies ist der Fehler, den es mir gibt ") 3ntax error : ungültiger arithmetischer Operator (Fehler Token ist " – KG2005
@ KW1: Versuchen Sie' #!/bin/sh' in '#!/bin/bash' zu ändern. –