Echo für Statuscodes?

911
David Cowden

Ich suche ein Werkzeug wie echo, aber Statuscodes

$ sts 120 $ echo $? 120 

Ich weiß, dass Sie eine Sub-Shell in einer bash-ähnlichen Umgebung verwenden können:

$ (exit 120) $ echo $? 120 

Aber gibt es eine Möglichkeit, dies unabhängig von Ihrer Hülle zu tun?

-1
Ich bin nicht ganz sicher, ob ich die Frage verstehe. Wollen Sie damit sagen, dass Sie eine Variable benötigen, die den Rückgabecode für einen Befehl auf einer * beliebigen * Shell abrufen würde, wie beispielsweise Bash, KSH, ...? nKn vor 8 Jahren 2
Ich bin nur neugierig, ob es ein Dienstprogramm gibt, das einen Wert als Eingabe übernimmt und mit diesem Wert beendet. Rein akademisch. David Cowden vor 8 Jahren 0

2 Antworten auf die Frage

1
nKn

Sie können ein sehr einfaches Skript ausführen, das überprüft, ob ein Parameter übergeben wird, und ansonsten zurückgeben 0.

#!/bin/bash  if [ $# -eq 1 ]; then # There's no parameter exit 0 else exit $1 fi 

Erteilen Sie ihm Ausführungsberechtigungen ( chmod +x returnscript.sh). Möglichkeiten, das Skript in einem anderen Skript aufzurufen:

Weg 1 :

/path/to/returnscript.sh 100 retcode=$? # retcode = 100 

Weg 2 :

/path/to/returnscript.sh retcode=$? # retcode = 0 
Vielen Dank. Ich habe wirklich nur gefragt, ob es ein Hilfsprogramm gibt, über das ich vielleicht nicht weiß. Es gibt viele seltsame Hilfsprogramme wie "cowsay". Ich war einfach neugierig, ob es einen gibt, der mit einem als Parameter übergebenen Rückgabewert existiert (= Ich verstehe nicht, warum Leute auf Fragen herabschauen, wenn sie nicht verstehen können, warum jemand sie fragen könnte ... David Cowden vor 8 Jahren 0
Ich fürchte, es gibt kein solches Werkzeug, es kann jedoch leicht erstellt werden. nKn vor 8 Jahren 1
0
Scott

Ich bin nicht sicher, ob ich die Frage verstehe. Sie scheinen nach einem Befehl zu suchen, dessen Exitstatus Sie in der Befehlszeile angeben können, ohne die in der Shell integrierte Funktionalität zu verwenden. Warum? Gibt es eine Shell, bei der (exit 120)es nicht funktioniert?

Hier sind einige Möglichkeiten:

  • awk 'BEGIN '
  • echo | sed 'q120'
  • sh -c "exit 120"
  • Schreibe dein eigenes Skript, das es tut exit "$1".
Ich bin nur neugierig .. kein praktischer Grund, außer zu testen, wie das `bash -e` builtin funktioniert. David Cowden vor 8 Jahren 0
Mit `(exit 120)` ist das gut möglich. Scott vor 8 Jahren 0
In der Tat, wie ich in der Frage festgestellt habe. Aber das ist nicht der Punkt der Frage (; David Cowden vor 8 Jahren 0
Nun, das ist der Punkt meiner Frage - ich verstehe den Punkt Ihrer Frage nicht. Inzwischen habe ich Ihnen vier Antworten gegeben - wie lautet Ihre Antwort? Scott vor 8 Jahren 0