Эхо для кодов состояния?

847
David Cowden

Я ищу инструмент, как echo, но для кодов состояния

$ sts 120 $ echo $? 120 

Я знаю, что вы можете использовать вложенную оболочку в среде, похожей на bash:

$ (exit 120) $ echo $? 120 

но есть ли способ сделать такое независимым от вашей оболочки?

-1
Я не совсем уверен, что понимаю вопрос. Вы хотите сказать, что вам нужна переменная, которая бы получала код возврата для команды на * любой * оболочке, например, Bash, KSH, ...? nKn 8 лет назад 2
@nKn Мне просто любопытно, есть ли утилита, которая будет принимать значение в качестве входа и выходить с этим значением. Чисто академический. David Cowden 8 лет назад 0

2 ответа на вопрос

1
nKn

You could do a very simple script that checks if a parameter is passed and otherwise return 0.

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

Give it execution permissions (chmod +x returnscript.sh). Ways of invoking the script within a different script:

Way 1:

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

Way 2:

/path/to/returnscript.sh retcode=$? # retcode = 0 
Благодарю. Я действительно просто спрашивал, существует ли утилита, о которой я, возможно, не знаю ... есть много странных утилит, таких как `cowsay '. Мне было просто любопытно, существует ли такой, который выходит с возвращаемым значением, переданным в качестве параметра (= Я не понимаю, почему люди смотрят свысока на вопросы, если они не могут понять, почему кто-то может их задавать ... David Cowden 8 лет назад 0
Боюсь, что такого инструмента нет, его легко создать. nKn 8 лет назад 1
0
Scott

I'm not sure I understand the question.  You seem to be looking for a command whose exit status you can specify on the command line, without using functionality that's built in to the shell.  Why?  Is there some shell where (exit 120) doesn't work?

Here are some possibilities:

  • awk 'BEGIN '
  • echo | sed 'q120'
  • sh -c "exit 120"
  • Write your own script that does exit "$1".
Мне просто любопытно ... нет никакой практической причины, кроме желания проверить, как работает встроенная команда bash -e. David Cowden 8 лет назад 0
Вы можете сделать это очень хорошо с помощью `(выход 120)`. Scott 8 лет назад 0
Действительно, как я уже говорил в вопросе. Но не в этом суть вопроса (; David Cowden 8 лет назад 0
Ну, в этом суть моего вопроса - я не понимаю суть вашего вопроса. Между тем, я дал вам четыре ответа - каков ваш ответ? Scott 8 лет назад 0

Похожие вопросы