如何在 bash 脚本中 运行 命令行工具的多个实例? + 脚本的用户输入

How to run multiple instances of command-line tool in bash script? + user input for script

我正在尝试从 Mac 上的单个 bash 脚本同时启动 imagesnap 的多个实例。此外,在 运行 脚本时通过用户输入给出(一些)参数会很棒。

我连接了 4 个网络摄像头,并希望以给定的间隔从每个摄像头拍摄一系列图像。作为 bash 脚本的绝对初学者,我不知道从哪里开始搜索。我已经测试了 4 个 imagesnap 实例在从终端手动 运行 时工作得很好,但仅此而已。

总而言之,我希望制作一个 bash 脚本:

--编辑--

考虑到这一点后,我对如何使用 imagesnap -t x.xx 拍摄间隔图像的能力来组织这个脚本有一个模糊的想法:

以下快速破解(保存为 run-periodically.sh)可能会做正确的事情:

#!/bin/bash

interval=5
start=$(date +%s)

while true; do
    # run jobs in the background
    for i in 1 2 3 4; do
        "$@" &
    done
    # wait for all background jobs to finish
    wait
    # figure out how long we have to sleep
    end=$(date +%s)
    delta=$((start + interval - end))
    # if it's positive sleep for this amount of time
    if [ $delta -gt 0 ]; then
        sleep $delta || exit
    fi
    start=$((start + interval))
done

如果您将此脚本放在适当的位置并使其可执行,您可以运行它像:

run-periodically.sh imagesnap arg1 arg2

但在测试时,我 运行 使用:

sh run-periodically.sh sh -c "date; sleep 2"

这将导致 "start a shell that displays the date then waits a couple of seconds" 的四个副本每 interval 秒并行 运行。如果你想 运行 在不同的工作中做不同的事情,那么你可能想将它们明确地放入这个脚本或者这个脚本调用的另一个脚本中......