如何根据命令的输出创建 Bash 条件脚本?

如何根据命令的输出创建 Bash 条件脚本?

我有一个 Java 程序,它获取两个参数(视频文件名和图像)并在第一行输出布尔值(0 或 1):

java -jar myProgram video1.mp4 image.png
> 0
>some extra information...
>other extra information....going on

现在使用 bash 脚本,我需要迭代文件夹中的所有文件(不是嵌套文件夹中的文件),使用传递给第一个参数的文件名运行程序(视频名称每次都会更改,并且图像是固定的),并且如果第一行输出为0,则将文件复制到folder0,如果输出为1,则将文件复制到folder1

我怎样才能在 bash 中实现这一目标?

答案1

使用条件语句时您可以更好地控制:

for file in *; do
   if [[ -f "$file" ]]; then
      output=$(java -jar myProgram "$file" image.png | head -n 1)
      [[ $output = "0" ]] && cp -- "$file" folder0
      [[ $output = "1" ]] && cp -- "$file" folder1
   fi
done

编辑:如果您仍然想查看 的输出java,可以使用以下命令:

output=$(java -jar myProgram "$file" image.png | tee /dev/tty | head -n 1)

答案2

就像是:

for f in source/*
do
    cp "$f" folder$(java -jar myProgram "$f" image.png | head -1)
done

相关内容