Как окружить входные данные xarg большим количеством аргументов?

Основная проблема, похоже, связана с & в URL после «Радио» и перед «режимом». Он завершает команду snapserver и начинает новую (присвоение переменной, вывод которой перенаправляется), оставляя вывод snapserver не перенаправленным.

Согласно вашему комментарию, измененная команда:

snapserver -s 'pipe:///tmp/snapfifo?name=Radio&mode=read' &>/dev/null & 
1
28.11.2016, 08:36
2 ответа

Забудьте о xargs, просто используйте цикл while. Предполагается, что printf встроен в

#!/bin/sh
printf "%s\n" "command"
printf "    %s\\\n" "<GLOBAL_PREFIX_1>" "<GLOBAL_PREFIX_2>" "..."
while read -r ; do
    printf "    <PREFIX1> <PREFIX2> ... %s <SUFFIX1> <SUFFIX2> ... \\\n" "$REPLY"
done
printf "    %s\\\n" "<GLOBAL_SUFFIX_1>" "<GLOBAL_SUFFIX_2>"
printf "    %s\n" "..."

. Если в PREFIXn или SUFFIXn есть интересных символов, например % или \ , то их нужно будет экранировать.

Конечно, sed будет работать

sed '1i\
GP1\\\
GP2\\\
...\\
s/.*/P1 P2 & S1 S2\\/
$s/.*/&\
GS1\\\
GS2\\\
... '

Для awk у вас есть предложения BEGIN и END ....

1
27.01.2020, 23:46

Если префикс arg и постфикс arg не содержат пробелов, то -X GNU Parallel создан для вас:

seq 1000 | parallel -X echo global prefix argpre{}argpost global postfix

Он будет равномерно распределяться по номеру ядра. Если вам это не нравится:

seq 1000 | parallel -j1 -n10 -X echo global prefix argpre{}argpost global postfix
0
27.01.2020, 23:46

Теги

Похожие вопросы