Como verificar o status de saída de um aplicativo depois de usar 'Abrir' no Shell -- acos campo com terminal campo com bash camp apple Relacionado O problema

How to check the exit status of an application after using 'open' in shell


4
vote

problema

português

Eu já olhei para isso e não tenho certeza de como fazer isso.

Eu quero usar um script bash para abrir um aplicativo usando 'Abrir' e, em seguida, verifique o status de saída do aplicativo depois de terminar.

Na medida em que estou ciente, o Open -w sairá com o status 0 desde que o aplicativo se abriu, não estou interessado nesta saída, estou interessado nos aplicativos.

Atualmente eu tenho o seguinte script:

  trap "echo manual abort; exit 1"  1 2 3 15;  while open -W /path/to/MyApp.app     echo "all is well" done  exit 0     

Que abre o aplicativo e aguarda, se o status de saída for 0, ele reabrirá o aplicativo novamente após o fechamento. Isso é destinado, no entanto, o que eu quero é ser capaz de parar este script se o aplicativo em si não sair 0 em vez do comando 'aberto' saindo com sucesso.

tão curto:

abrir myapp.app

Se myapp.app (não abrir) falha, pare o script, caso contrário, reabrir myapp.app

english

I've looked all over for this and I'm not entirely sure how to do this.

I want to use a bash script to open an application using 'open' and then check the exit status of the application after it has finished.

As far as I am aware, open -W will exit with status 0 so long as the application did open, I'm not interested in this exit, I'm interested in the apps exit.

Currently I have the following script:

trap "echo manual abort; exit 1"  1 2 3 15;  while open -W /path/to/MyApp.app     echo "all is well" done  exit 0  

Which opens the app and then waits, if the exit status is 0 it will re-open the app again after closing. This is intended however, what I want is to be able to stop this script if the app itself didn't exit 0 rather than the command 'open' successfully exiting.

So in short:

Open MyApp.app

if MyApp.app (not open) crashes, stop the script, otherwise, re-open MyApp.app

        

Lista de respostas

5
 
vote

Minha resposta é: você não pode com open mesmo com o sinal -W Em vez disso, use um script de shell repeat_run O que pode ser construído da seguinte forma:

  cat >repeat_run.sh <<'__eof__' #!/bin/sh app_name=$1 bin_name=`defaults read /Applications/${app_name}.app/Contents/Info.plist CFBundleExecutable 2>/dev/null` if [ "${bin_name}" = "" ] ; then     echo "${app_name} not found" >&2     exit 2 fi bin_path=/Applications/${app_name}.app/Contents/MacOS/${bin_name} trap "echo manual abort ; exit 1"  1 2 3 15 while : ; do     ${bin_path}     rc=$?     case $rc in         0)      echo "$1 terminated correctly" ;;         *)      exit ${rc} ;;     esac done __eof__ make repeat_run ./repeat_run Pages    
 

My answer is: you can't with open even with the -W flag. Rather use a shell script repeat_run which might be built as follows:

cat >repeat_run.sh <<'__eof__' #!/bin/sh app_name=$1 bin_name=`defaults read /Applications/${app_name}.app/Contents/Info.plist CFBundleExecutable 2>/dev/null` if [ "${bin_name}" = "" ] ; then     echo "${app_name} not found" >&2     exit 2 fi bin_path=/Applications/${app_name}.app/Contents/MacOS/${bin_name} trap "echo manual abort ; exit 1"  1 2 3 15 while : ; do     ${bin_path}     rc=$?     case $rc in         0)      echo "$1 terminated correctly" ;;         *)      exit ${rc} ;;     esac done __eof__ make repeat_run ./repeat_run Pages 
 
 
   
   

Perguntas relacionadas

2  Como posso alterar o olhar padrão?  ( How can i change the default bash look ) 
Minha bash é branca e preta e eu gostaria que parecesse muito mais colorido, como faço isso? ...

2  GRC dentro do terminal (com cores diferentes no terminal em função do tamanho dos arquivos) não funciona em 10.14.6 Mojave e trabalhando em alta Sierra 10.13.6  ( Grc inside terminal with different colors into terminal as a function of files ) 
Eu posso trabalhar a ferramenta grc , que permite ter cores para permissões e cores diferentes como uma função do tamanho dos arquivos listados, por exemplo,...

6  Qlmanage não debug  ( Non debug qlmanage ) 
Eu tenho um bash alias configurado no meu terminal, alias quicklook='qlmanage -p ' , para facilmente o Quicklook arquivos do terminal, mas a saída me erram...

3  Onde devo colocar executáveis ​​locais em macos? [duplicado]  ( Where should i place local executables on macos ) 
. Esta pergunta já tem respostas aqui : Onde devo armazenar aplicativos de linha de comando? ...

16  Jogando sons de alerta do terminal  ( Playing alert sounds from terminal ) 
Existe uma maneira de jogar sons de alerta OSX do terminal? Os sons de alerta listados nas preferências do sistema e GT; Som e GT; Tabela de efeito de som ...

0  Convertendo Ação Automático no AppleScript para Bash Script  ( Converting automator action in applescript to bash script ) 
Acabei de escrever um aplicativo automático usando o AppleScript (junto com algumas linhas de bash) para iniciar o FTP com um único clique. No entanto, corre ...

1  Problema com sintaxe de exclusão de conta script  ( Problem with scripted account deletion syntax ) 
Estou trabalhando em um módulo de script de limpeza de contas que pode lidar com as contas ocultos e unilindas que estamos criando em massa em novos sistemas ...

2  Efeitos de mudança de casca  ( Effects of changing shell ) 
Recentemente Apple alterou o shell padrão para zsh a partir bash . No passado, fiz alterações significativas no meu arquivo abcdefghgjklmnabcdefghijklmn3 ...

1  Como corrigir localize.updatedb não respeitando o diretório excluído de /etc/locate.rc?  ( How to fix locate updatedb not respecting directory excluded from etc locate rc ) 
Eu queria excluir alguns diretórios a partir dos resultados de ABCDEFGHIJKLMNABCDEFGHIJKLMN0 Ao editar ABCDEFGHIJKLMNABCDEFGHIJKLMN1 . Infelizmente se eu e...

0  Obtendo .Profile para executar após .bash_login  ( Getting profile to execute after bash login ) 
Quando eu instalei o RVM, descobri que criou .bash_login com este: [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a s...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.