我有一个 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