美文网首页
解决ubuntu系统shell脚步使用不了for循环

解决ubuntu系统shell脚步使用不了for循环

作者: 南南宫问天 | 来源:发表于2020-04-09 19:42 被阅读0次

    先看脚本内容

    [root@db scripts]# cat ping.sh  ##一个简单的ping主机段有多少主机在线脚步
    #!/bin/sh
    for i in {1..254}
    do 
      IP=172.16.210.$i
      {
       ping -c1 -W1 $IP > /dev/null 2>&1
       [ $? -eq 0 ] && echo "$IP"
       } &
    done 
    wait
    echo "在线ping测试完成"
    
    [root@db scripts]# sh ping.sh  ##在centos系统正常
    172.16.210.1
    172.16.210.10
    172.16.210.11
    172.16.210.13
    172.16.210.12
    172.16.210.36
    172.16.210.250
    在线ping测试完成
    
    czq@sunlog:~$ sh ping.sh ##在ubuntu系统只输出了结束语句ping完成
    在线ping测试完成
    

    因为ubuntu系统默认使用的shell是dash,而centos默认使用的是bash,所以我们要更改ubuntu所使用的shell为bash

    czq@sunlog:~$ ls -l /bin/sh
    lrwxrwxrwx 1 root root 4 4月   9 19:31 /bin/sh -> dash
    

    解决办法

    czq@sunlog:~$ sudo dpkg-reconfigure dash
    

    选择否

    dash.png

    提示信息可以忽略

    正在删除 dash 导致 /bin/sh 转移到 /bin/sh.distrib
    正在添加 bash 导致 /bin/sh 转移到 /bin/sh.distrib
    正在删除 dash 导致 /usr/share/man/man1/sh.1.gz 转移到 /usr/share/man/man1/sh.distrib.1.gz
    正在添加 bash 导致 /usr/share/man/man1/sh.1.gz 转移到 /usr/share/man/man1/sh.distrib.1.gz
    czq@sunlog:~$ sh ping.sh 再次执行就好了
    172.16.210.1
    172.16.210.12
    172.16.210.13
    172.16.210.11
    172.16.210.10
    172.16.210.36
    172.16.210.250
    在线ping测试完成
    

    相关文章

      网友评论

          本文标题:解决ubuntu系统shell脚步使用不了for循环

          本文链接:https://www.haomeiwen.com/subject/rqjhmhtx.html