Linux/Unix Shell Scripting - Problema en ciclo con while

 
Vista:
sin imagen de perfil
Val: 25
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Problema en ciclo con while

Publicado por epicteto (18 intervenciones) el 24/04/2021 16:19:57
Hola

Tengo este ciclo que funciona perfectamente:

1
2
3
4
5
6
7
while IFS= read -r line
 
do
 
echo "${line:2}"
 
done <<< "$nombres"

en el cual echo me muestra los distintos valores de $line pero eliminando los 2 primeros caracteres del valor de la variable. Se completa al ciclo sin problemas, todo correcto.

Pero si añado en el ciclo un comando ffmpeg en donde el nombre del archivo de entrada es la misma variable:

1
2
3
4
5
6
7
8
9
while IFS= read -r line
 
do
 
echo "${line:2}"
 
ffmpeg  -loop 1 -i "${line:2}" -t 00:00:02  -vcodec libx264 -profile:v baseline -pix_fmt yuv420p salida.mp4
 
done <<< "$nombres"

La primera iteración se hace perfectamente. En la segunda, echo muestra la variable $line sin 4 caracteres, no 2, y por lo tanto ffmpeg falla porque toma un valor de entrada erróneo. En la tercera iteración, sin embargo, echo vuelve a mostrar correctamente $line sin sus 2 primeros caracteres.

El problema parece estar en ffmpeg, que desvirtúa el funcionamiento del ciclo. Necesito que ffmpeg funcione dentro del ciclo dándole como entrada los valores de la variable $nombres pero restando los dos primeros caracteres en cada iteración

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema en ciclo con while

Publicado por Tom (361 intervenciones) el 25/04/2021 09:13:57
Asigna IFS antes del while, no en la condición.
ffmpeg por lo que leo por ahí es interactivo. Los comandos interactivos pueden modificar la entrada estándar.
Prueba a usar ffmpeg en modo _no_ interactivo:

ffmpeg -nostdin
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Problema en ciclo con while

Publicado por epicteto (18 intervenciones) el 25/04/2021 16:44:15
Gracias por tu ayuda, pero no funciona. He probado lo que sugieres y unas cuantas cosas más y no he tenido suerte

Meter la entrada de ffmpeg en un bucle parece ser un verdadero problema porque desvirtua las variables si en ese mismo bucle hay que editar el contenido de esas variables

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema en ciclo con while

Publicado por Tom (361 intervenciones) el 25/04/2021 20:53:01
Bueno, parece que no eres el único con ese problema.
Hay otra propuesta en stackoverflow ... aunque es casi lo mismo (o debería):

ffmpeg -nostdin -loop 1 -i "${line:2}" -t 00:00:02 -vcodec libx264 -profile:v baseline -pix_fmt yuv420p salida.mp4 </dev/null
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Problema en ciclo con while

Publicado por epicteto (18 intervenciones) el 25/04/2021 23:23:29
Esto no lo había probado. En cuanto pueda lo haré y publicaré el resultado por si le resulta útil a alguien.

Gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Problema en ciclo con while

Publicado por epicteto (18 intervenciones) el 26/04/2021 11:20:28
Funciona perfectamente. En el mismo bucle tengo 3 instrucciones ffmpeg que usan varias variables y con < /dev/null al final de cada una de ellas no hay errores en el nombre de las variables


Muchas gracias !!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha aumentado su posición en 5 puestos en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Problema en ciclo con while

Publicado por Yesica (1 intervención) el 25/04/2021 17:04:33
Hola a mi me gustaría que me ayudes con un programa donde se pide el área y perímetro de tres triángulos uno equilátero otros isosceles y escaleno
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar