我试图让这个功能,使其易于并行我的bash脚本工作。这个想法很简单,我并不是按顺序运行每个命令,而是将我想运行的命令传递给此函数,并在读取行时执行;为我运行bg中的工作并照顾物流....但它不起作用。我通过执行哪些东西添加了-x集,看起来像我想要执行的东西得到奇怪的引号......我该怎么办?bash - 错误尝试管道命令来运行分开的功能
runParallel() {
while read line
do
while [ "`jobs | wc -l`" -eq 8 ]
do
sleep 2
done
{
set -x
${line}
set +x
} &
done
while [ "`jobs | wc -l`" -gt 0 ]
do
sleep 1
jobs >/dev/null 2>/dev/null
echo sleeping
done
}
for H in `ypcat hosts | grep fmez | grep -v mgmt | cut -d\ -f2 | sort -u`
do
echo 'ping -q -c3 $H 2>/dev/null 1>/dev/null && echo $H - UP || echo $H - DOWN'
done | runParallel
当我运行它,我得到的输出类似如下:
> ./myscript.sh
+ ping -q -c3 '$H' '2>/dev/null' '1>/dev/null' '&&' echo '$H' - UP '||' echo '$H' - DOWN
Usage: ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline]
[-p pattern] [-s packetsize] [-t ttl] [-I interface or address]
[-M mtu discovery hint] [-S sndbuf]
[ -T timestamp option ] [ -Q tos ] [hop1 ...] destination
+ set +x
sleeping
>
让make做到这一步怎么了? –