передача неопределенного количества аргументов программе в bash - PullRequest
0 голосов
/ 30 марта 2020

У меня есть скрипт, который работает для буферизации (в приведенном ниже коде он установлен на 5000 миллисекунд), за исключением того, что я не знаю, как вызвать необходимый python скрипт с неопределенным числом аргументов. Как это можно сделать?

РЕДАКТИРОВАТЬ:

Я обновил if logi c в while l oop, чтобы отразить " взломать ", который работает с for l oop аргументов, но я знаю, что есть решение в одну строку для этого.

ПРИМЕЧАНИЕ: я полагаю, что я мог бы l oop через $lines, создайте строку и eval (), но это кажется уродливым. ПРИМЕЧАНИЕ 2. Я новичок в bash; комментарии по общему кодированию приветствуются после ответа на основной вопрос.

#!/bin/bash
sent=0
interval=5000
lines=()
i=0;
while read line; do
    lines[$i]=$line
    ((i++))
    point=$(($(date +%s%N)/1000000));

    if [ $((point-sent)) -gt $interval ]
    then
        cmd="php LineProcessor.py";
        for arg in "${lines[@]}"
        do
            cmd="$cmd \"$arg\""
        done
        eval $cmd

        sent=$point
        # -- reset lines array --
        i=0
        lines=()
    fi


done

1 Ответ

0 голосов
/ 31 марта 2020

Таким образом, чтобы дать ответ, а также комментарии ниже, правильная строка выше будет:

python LineProcessor.py "${lines[@]}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...