Я пытаюсь сделать простой сценарий, чтобы обернуть команду таким образом, чтобы она работала с переключенным экраном. Основной целью является top
но я хотел, чтобы это была общая оболочка.
У меня все работает нормально с bash, но я хочу, чтобы оно работало с dash, ash или любой другой простой оболочкой, которую можно использовать как /bin/sh
. Проблема в том, что когда я прерываю завернутую команду с помощью Ctrl+C, это также прерывает скрипт.
Скрипт bash выглядит так:
#!/bin/bash
tput smcup
( "$@" )
status=$?
tput rmcup
exit $status
Я знаю, что мог бы использовать командную trap
bash, но это сделало бы ее еще более специфичной для bash , и это именно то, чего я пытаюсь избежать.
Как ни странно, с busybox sh он работает так, как задумано.
Итак, есть ли способ заставить его работать с любой другой оболочкой sh- type без прерывания при прерывании выполнения команды, чтобы команда tput rmcup
всегда выполнялась?
Примечание: я прочитал вопросы https://stackoverflow.com/questions/6961389/exception-handling-in-shell-scripting и https://stackoverflow.com/questions/15656492/linux-shell-try-catch- наконец, но ни один не ответил на это.