-1

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

$ sts 120
$ echo $?
120

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

$ (exit 120)
$ echo $?
120

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

2 ответа2

1

Вы можете сделать очень простой скрипт, который проверяет, передан ли параметр, и в противном случае возвращает 0 .

#!/bin/bash

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

Дайте ему разрешения на выполнение (chmod +x returnscript.sh). Способы вызова скрипта в другом скрипте:

Способ 1:

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

Способ 2:

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

Я не уверен, что понимаю вопрос.  Похоже, вы ищете команду, состояние выхода которой вы можете указать в командной строке, без использования функциональности, встроенной в оболочку.  Зачем?  Есть ли какая-нибудь оболочка, где (exit 120) не работает?

Вот несколько возможностей:

  • awk 'BEGIN {exit 120}'
  • echo | sed 'q120'
  • sh -c "exit 120"
  • Напишите свой собственный скрипт, который exit "$1" .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .