Como posso fazer o comando “postcmd” do tcsh não executar o comando digitado se o comando postcmd falhar?

1

No bash, quando eu implementar a funcionalidade precmd () via trap ??? DEBUG , posso fazer com que o comando digitado falhe em executar, se o comando na chamada precmd () retornar um código de retorno diferente de zero; usando set -o functrace e shopt -s extdebug .

Estou tentando implementar uma funcionalidade semelhante no tcsh via postcmd alias no tcsh. No entanto, não consegui encontrar nenhum detalhe na documentação do tcsh sobre como fazer a mesma coisa que no bash (se o comando em postcmd falhar e retornar RC diferente de zero, não execute o comando digitado no prompt).

Como posso conseguir esse efeito no tcsh?

Resultado desejado:

# Set up postcmd alias to check of current user is "OK" (in OK file)
MYUSER:~> alias postcmd 'grep $USER /tmp/ok_users > /dev/null'

# Add myself to OK list  (in another xterm)
MYUSER:~> echo "$USER" > ! /tmp/ok_users
MYUSER:~> cat /tmp/ok_users
MYUSER

MYUSER:~> grep $USER /tmp/ok_users | wc -l; echo $?
1
0

# Run command - expect it to succeed:
MYUSER:~> echo TEST2
TEST2  # <==== As expected

##########
# Now, let's make sure I'm NOT in OK users (in another xterm).

MYUSER:~> echo "junk" > ! /tmp/ok_users
MYUSER:~> cat /tmp/ok_users
junk
MYUSER:~>  grep $USER /tmp/ok_users | wc -l ; echo $?
0
1

# Now, what I need is, for my typed command to NOT be executed
#     due to "postcmd" hook command (grep) failing

MYUSER:~> echo TEST2
MYUSER:~> <==== Want to NOT echo anything. How do I do that?

Eu preferiria que a resposta fosse portável, mas, se necessário, pelo menos deveria funcionar no RedHat Enterprise Linux 6

    
por DVK 09.01.2018 / 17:16

0 respostas

Tags