Cómo mostrar un archivo .jpg usando FBI en un script bash durante un período de tiempo determinado y luego ejecutar el siguiente comando en el script

Cómo mostrar un archivo .jpg usando FBI en un script bash durante un período de tiempo determinado y luego ejecutar el siguiente comando en el script

Estoy intentando utilizarlo fbien un script bash para mostrar una serie de .jpgimágenes. Pero una vez que fbicomienza su proceso, continúa pasando por las imágenes y solo quiero mostrar cada imagen una vez durante un período de tiempo determinado.

Respuesta1

Descargo de responsabilidad:En realidad, no probé esto con el FBI, usé Watch con un montón de archivos de texto (el reloj muestra texto, no imágenes, pero también se ejecuta hasta que se elimina, como el FBI), por lo que, en teoría, esta técnica (o similar) también debería trabajar con el FBI.

#!/bin/sh

# Where are the files?
IMG_PATH="/foo/bar/fred/"

cd $IMG_PATH

# File list. Can either be hard-coded, space separated,
# or to use the output of a command, use $(command). The
# safest approach is to use a shell glob as I have done here.
FILE_LIST=*.txt

# How long to run the command in seconds before killing it?
TIMEOUT=1

# For every file on the list...
for FILE in $FILE_LIST
do
  # OK, this is where the magic happens...
  # First invoke a shell and feed the mini script (in double quotes)
  # to that shell. The mini script first executes fbi with whatever
  # filename is now set to $FILE by the loop, meanwhile, whatever is
  # in brackets gets executed simultaneously (sleep for $TIMEOUT seconds
  # then force kill the second shell and all its children, including fbi).
  # What the heck is \$\$? Well, $$ normally refers to the process ID
  # of the script itself. But we don't want to kill the main script with
  # the for loop - we want to loop to go on. So we escape the $$ with
  # backslashes like so \$\$ so that literally "$$" gets passed to the
  # second subshell, so it kills only itself (and fbi as its child).
  #########################
  # You can add parameters to fbi if you need to.
  # Also you may want to try removing the -9 parameter to kill in
  # case it messes up your framebuffer... not sure how well fbi
  # handles a forceful (-9) vs. graceful (no -9) kill.
  sh -c "(sleep $TIMEOUT; kill -9 \$\$) & exec fbi $FILE"
done

Espero que esto al menos te oriente en la dirección correcta... :)

información relacionada