LIMIT не устанавливается внутри параллельной оболочки.Выполнение echo "$NUM > $LIMIT" | bc -l
расширяется до echo "123 > " | bc -l
, что приводит к синтаксической ошибке, сообщаемой bc
.Вам нужно экспортировать / передать / поместить это значение в оболочку, запущенную изнутри параллельно.Попробуйте это:
LIMIT=25
ps | parallel -j2 '
LIMIT="'"$LIMIT"'"
echo "Do stuff for {} to determine NUM"
NUM=33.3333 # set to demonstrate
if (( $(echo "$NUM > $LIMIT" | bc -l) )); then
echo "react..."
fi
echo "Do stuff..."
'
Или лучше использовать env_parallel , предназначенный для таких задач.
Примечание: Параллельная GNU была разработана для выполнения заданийпараллельно, используя один или более компьютеров.Для сценариев, запускаемых на одном компьютере, лучше придерживаться команды xargs, которая более доступна (поэтому вам не нужно устанавливать какой-либо пакет при каждом перемещении сценария на другой компьютер).