bash 스크립트를 쉽게 병렬 처리 할 수 있도록이 함수를 사용하려고합니다. 아이디어는 간단합니다. 각 명령을 순차적으로 실행하는 대신,이 함수로 실행하려는 명령을 파이프 처리하고 행을 읽는 동안 수행합니다. 나를 위해 bg에서 작업을 실행하고 물류 .... 돌봐 그것은 작동하지 않습니다. 나는 물건을 처형 한 곳에서 set -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 할 때 무엇이 잘못 되었나요? –