具有动态数量的用户输入变量的 Bash 脚本

具有动态数量的用户输入变量的 Bash 脚本

我制作了以下脚本:

#!/bin/bash
read var1
ffmpeg  -ss $var1 -y -i "$1" -frames:v 1 -q:v 2 "1$.jpg" 
exit

这对于单个文件来说效果很好。脚本等待输入,然后将其传递给 ffmpeg。但是我如何将其重新用于多个文件,即脚本要求为每个传递的参数提供输入,而不需要像这样手动执行?

#!/bin/bash
read var1
read var2
read var3
ffmpeg  -ss $var1 -y -i "$1" -frames:v 1 -q:v 2 "$1.jpg" 
ffmpeg  -ss $var2 -y -i "$2" -frames:v 1 -q:v 2 "$2.jpg" 
ffmpeg  -ss $var3 -y -i "$3" -frames:v 1 -q:v 2 "$3.jpg"

答案1

使用for循环:

#!/usr/bin/env bash

for param in "$@"; do
    read -p "Enter ... something: " -r var
    ffmpeg  -ss "$var" -y -i "$param" -frames:v 1 -q:v 2 "${param}.jpg" 
done

for param in "$@"; do可以写成for param do

相关内容