Die für nohup gesendete for-Schleife funktioniert normalerweise nicht
$ for i in {00..03};do echo $i;done
00
01
02
03
Schreiben Sie diesen Code jedoch in test.sh, nohup ./test.sh & gibt folgende Ausgabe aus:
$ nohup ./test.sh &
{00..03}
kann nicht 00 01 02 03 produzieren, warum? Ps. auf debian 8 oder ubuntu 15.10 ("seq -w" funktioniert)
Antworten:
3 für die Antwort № 1Wenn Ihre Datei keinen Shebang hat, hängt es von der Shell ab nohup
Führt das Skript in aus. Fügen Sie der Datei diese Zeile voran:
#!/bin/bash
1 für die Antwort № 2
Schon seit Klammererweiterung ist keine POSIX-Shell-Funktion, und viele Systemdienste werden im POSIX-Modus ausgeführt. Dies funktioniert nicht.
Der tragbare Weg, dies für nur vier Elemente zu lösen, ist die Verwendung
for i in 00 01 02 03; do
something
done
Wenn Sie sich daran gewöhnen, Dinge auf die POSIX-Art zu tun, werden Sie weniger Überraschungen dieser Art erleben.