Problema en ciclo con while
Publicado por epicteto (18 intervenciones) el 24/04/2021 16:19:57
Hola
Tengo este ciclo que funciona perfectamente:
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:
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
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


0