Ich suche ein Tool wie echo
, aber für Statuscodes
$ sts 120
$ echo $?
120
Ich weiß, dass Sie in einer Bash-ähnlichen Umgebung eine Unter-Shell verwenden können:
$ (exit 120)
$ echo $?
120
aber gibt es eine Möglichkeit, dies unabhängig von Ihrer Shell zu tun?
Antwort1
Sie könnten ein sehr einfaches Skript erstellen, das prüft, ob ein Parameter übergeben wurde und andernfalls zurückgibt 0
.
#!/bin/bash
if [ $# -eq 1 ]; then
# There's no parameter
exit 0
else
exit $1
fi
Geben Sie ihm Ausführungsberechtigungen ( chmod +x returnscript.sh
). Möglichkeiten, das Skript innerhalb eines anderen Skripts aufzurufen:
Weg 1:
/path/to/returnscript.sh 100
retcode=$?
# retcode = 100
Weg 2:
/path/to/returnscript.sh
retcode=$?
# retcode = 0
Antwort2
Ich bin mir nicht sicher, ob ich die Frage verstehe. Sie scheinen nach einem Befehl zu suchen, dessen Beendigungsstatus Sie in der Befehlszeile angeben können, ohne die in die Shell integrierte Funktionalität zu verwenden. Warum? Gibt es eine Shell, bei der das (exit 120)
nicht funktioniert?
Hier sind einige Möglichkeiten:
awk 'BEGIN {exit 120}'
echo | sed 'q120'
sh -c "exit 120"
- Schreiben Sie Ihr eigenes Skript, das dies tut
exit "$1"
.