Comando Unix para sair do prompt de comando

0

Como posso sair do prompt de comando do arquivo shell?

o arquivo shell contém:

if(); then
// some unix code here
else
// want to exit from cmd prompt or Kill current cmd prompt
fi

alguém sabe @ it?

    
por Bhushan J 18.04.2013 / 07:59

2 respostas

0

Assim como Chris Down , vou assumir que você está usando o bash do GNU. Outras conchas podem ser diferentes, mas a ideia geral deve ser a mesma.

No bash, a variável de ambiente $$ contém o ID do processo em execução no momento e $PPID contém o ID do processo pai do processo em execução. Como Chris exemplificou, você pode ir ainda mais longe, mas / proc é específico do Linux.

Você pode perguntar ao usuário se deseja sair usando uma construção como a seguinte.

echo "Do you want to exit? (type YES or NO, then Enter)"
read answer
if test "${answer}" = "YES"; then
    # insert process killing magic
fi
# we only get here if the user did not answer "YES"

Se estiver disponível, você pode usar o GNU dialog para tornar a questão um pouco mais bonita. Nesse caso, substitua todo o snippet acima por algo parecido com o seguinte.

if dialog --yesno "Do you want to exit?" 10 50; then
    # insert process killing magic
fi
# we only get here if the user did not answer "YES"

Os números 10 50 especificam o tamanho da caixa de diálogo (linhas e colunas, respectivamente).

O process killing magic poderia ser algo tão simples quanto kill $PPID .

    
por 18.04.2013 / 08:36
2

Eu suponho que você quer dizer que você quer matar o shell interativo do qual o script foi bifurcado. Eu também suponho que esse shell é bash .

Se você estiver pesquisando o script nesse shell, use apenas exit . Caso contrário, envie SIGABRT (ou outro sinal que fará com que o bash saia) para o pid pai (o shell interativo) usando algo parecido com isto:

kill -ABRT "$PPID"

Ou em shells sem $PPID (isso é específico do Linux):

read -r _ _ _ ppid _ < "/proc/$$/stat"
kill -ABRT "$ppid"
    
por 18.04.2013 / 08:23