¿Cómo puedo esperar hasta que haya comenzado una solicitud? -- bash campo con scripts camp askubuntu Relacionados El problema

How can I wait until an application has started?


1
vote

problema

Español

En un script de bash, ¿cómo puedo esperar hasta que se abra una aplicación?

Ejemplo:

  #!/bin/bash  # wait until Thunderbird open to then close its main window... wmctrl -c "Mozilla Thunderbird"   
Original en ingles

In a Bash script, how can I wait until an application is open?

Example:

#!/bin/bash  # wait until Thunderbird open to then close its main window... wmctrl -c "Mozilla Thunderbird" 
     

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

La respuesta básica es que tiene que monitorear la lista de ventanas abiertas para el cambio. Puede hacerlo en número de formas, pero como está usando wmctrl puede usarlo así:

  /usr/share/tomcat7/bin/setenv.sh0  

Dado que también ha solicitado el ejemplo para el bucle hasta que se cierre la ventana específica, aquí hay un ejemplo editado con un enfoque de bucle alternativo (que probablemente sería preferido; al menos esa es la estructura que uso personalmente con bastante lote):

  /usr/share/tomcat7/bin/setenv.sh1  
 

Basic answer is that you have to monitor list of open windows for change. You can do so in number of ways, but since you're using wmctrl you can use that like so:

#!/bin/bash while true do     # get list of windows     windows=$(wmctrl -l)     # check if window is on the list     if [[ "$windows" =~ "Mozilla Firefox" ]];     then          echo "found firefox, closing it  in 3 seconds"          sleep 3           wmctrl -c "Mozilla Firefox"     fi     # delay until next loop iteration     sleep 3 done 

Since you've also requested example for looping until the specific window closes, here's an edited example with alternative looping approach ( which would probably be preferred; at least that's the structure I personally use quite a lot):

#!/bin/bash # Script enters into this while loop, and keeps checking # if wmctrl -l lists firefox. Condition is true if firefox # isn't there. When firefox appears, condition is false, # loop exits while ! [[ "$(wmctrl -l)" =~ "Mozilla Firefox" ]]  do     # number of seconds can be changed for better precision     # but shorter time equals more pressure on CPU     sleep 3 done  # Only after firefox appears , we get to here echo "found firefox, closing it  in 3 seconds" sleep 3  wmctrl -c "Mozilla Firefox"  # Same idea as before - we enter the waiting loop, # and keep looping until firefox is not on the list windows=$(wmctrl -l) while  [[ "$(wmctrl -l)" =~ "Mozilla Firefox" ]]  do     sleep 3 done #When loop exits, that means firefox isn't on the list echo "Script is done" 
 
 
     
     

Relacionados problema

6  Mi función de bash se ejecuta solo una vez por terminal abierto  ( My bash function runs only once per terminal opened ) 
Cuando intento ejecutar mi función de bash, definida en .bashrc, por segunda vez en el mismo terminal, no funciona. El código es el siguiente: lspci6 ...

135  ¿Cómo ejecutar un script simplemente haciendo doble clic en los archivos similares en Windows?  ( How to execute a script just by double clicking like exe files in windows ) 
¿Cómo puedo hacer que un script de Bash sea ejecutable haciendo doble clic al igual que ABCDEFGHIJKLMNABCDEFGHIJKLMN5 archivos en Windows? Lo intenté crean...

2  Abra la carpeta principal de un enlace simbólico a través de clic con el botón derecho?  ( Open the parent folder of a symbolic link via right click ) 
Podemos abrir una carpeta principal de cualquier archivo usando Script Nautilus como #!/bin/bash nautilus "$1" Si hago este script en el enlace simbó...

22  Script de bash que no se ejecuta desde crontab [duplicado]  ( Bash script not executing from crontab ) 
Esta pregunta ya tiene respuestas aquí : ¿Por qué los scripts de Crontab no funcionan? ...

0  Script Shell para instalar software y configurar la red  ( Shell script to install software configure network ) 
Oye, quería saber cómo, después de una nueva instalación de Ubuntu, puedo instalar todos los softwares esenciales (VLC, Apache, MySQL, PHP, Java, NetbeanSetc)...

0  Diferentes etapas en la programación de bash  ( Different stages in bash programming ) 
Tengo un programa de bash con diferentes etapas como: $stage=1 if [ stage -le 1]; then echo "execute stage 1" fi if [ stage -le 2]; then echo "execute sta...

2  ¿Cómo monitorear un archivo local para cambios, aplique un REGEX reemplazarlo y guardar / sobrescribir a un archivo de destino?  ( How to monitor a local file for changes apply a regex replace on it and save ov ) 
Me gustaría comenzar un script o algo que vea un archivo de texto para cambios. Cuando cambie el archivo, quiero ejecutarlo a través de un analizador REGEX pa...

9  ¿Cómo apagar Ubuntu después de (2 horas) de inactivo?  ( How to shutdown ubuntu after 2 hours of idle ) 
Correr: Xubuntu 14.04 32bit. He leído varias desactualizadas, no funcionando, trabajando diferente que quiero respuestas aquí y en otros lugares. Tuve un gu...

3  dpkg sin shell  ( Dpkg with no shell ) 
¿Cómo ejecutar DPKG sin shell? Aquí está mi problema: HECHO Y AUTORUN.SH Script en mi clave USB. Para ejecutar este script, creé reglas en /etc/udev/ru...

11  Ejecute scripts automáticamente en el servidor después de la conexión SSH  ( Run scripts automatically in server after ssh connection ) 
Cómo ejecutar un script automáticamente en el servidor Poco después de que el sistema del cliente establezca la conexión SSH con el servidor para ex: Supong...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos