请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答 回答被采纳积分+3

1回答

沈无奇 2022-02-27 17:39:09

能不能打下echo代替sleep?用sleep好像观察不好。另外,一般我们会在函数执行最后才向管道写入字符,所以上面脚本的写法不太对。

0 回复 有任何疑惑可以回复我~
  • 提问者 weixin_慕仙5516884 #1
    #!/bin/bash
    ppath=/tmp/pipe
    [ -e $ppath ] || mkfifo $ppath
    
    exec 6<>$ppath
    # if [ $1 -eq 1 ];then
    #     pronum=$1
    # fi
    for i in `seq 20`
    do
        echo "heelo" >&6
    done
    
    ping_text(){   
        # if ping -c 2 -W  1 192.168.1.$1 >/dev/null;then
        #     echo "keda"
        # else
        #     echo "$1bukeda"
        # fi
        echo  testA
        sleep 1
        echo $i
        echo "heeloaa" >&6
        echo  testB    
    }
    
    for i in `seq 2 100`
    do
        read -u6 name
        ping_text $i &
        echo helppp$i   
    done
    wait
    
    用sleep我是想看看在哪停顿,判断一下执行逻辑,换成echo发现是一次就执行完了,问题在哪呢?
    回复 有任何疑惑可以回复我~ 2022-02-27 17:58:04
  • 沈无奇 回复 提问者 weixin_慕仙5516884 #2
    你用了sleep,那就会出现超过你设定的进程数,这样就会失控。我现在执行了你的脚本,可以看到testA和testB均有多次输出啊,没有只执行一次。
    回复 有任何疑惑可以回复我~ 2022-02-27 18:09:39
  • 沈无奇 回复 提问者 weixin_慕仙5516884 #3
    同学,可以加下课程交流群,这里不太方法发图片
    回复 有任何疑惑可以回复我~ 2022-02-27 18:10:24
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信