Não interrompa o script em sh (“try-finally” para scripts sh)

0

Estou tentando fazer um script simples para envolver um comando de forma que ele seja executado com uma tela trocada. O alvo principal é top , mas eu queria que fosse um wrapper geral.

Eu consegui rodar bem com o bash mas eu quero fazê-lo funcionar com traço , ash ou qualquer outro shell simples que possa ser usado como /bin/sh . A questão é que quando eu interrompo o comando wrapped com Ctrl + C, isso interrompe o script também.

O script bash tem esta aparência:

#!/bin/bash
tput smcup
( "$@" )
status=$?
tput rmcup
exit $status

Eu sei que eu poderia ter usado o comando bash trap , mas isso teria tornado ainda mais bash -específico, e é exatamente isso que estou tentando para evitar.

Curiosamente, com o busybox sh ele funciona como esperado.

Então, existe uma maneira de fazer com que ele funcione com qualquer outra shell sh -type sem ser interrompido quando eu interromper o comando em execução, para que o comando tput rmcup sempre seja executado? ?

Observação: Li as perguntas link e link , mas nenhum deles respondeu isso.

    
por Pedro Gimeno 07.12.2014 / 04:17

0 respostas