Я пытаюсь сделать простой сценарий, чтобы обернуть команду таким образом, чтобы она работала с переключенным экраном. Основной целью является 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- наконец, но ни один не ответил на это.

0