坑了我一个小时的脚本执行

晚上写了一个脚本配置resolv.conf,写好后在虚拟机里面跑了下,一切正常,但编译进板子就运行不了。

   第一个错误点,在exeve函数执行时报错,错误信息是Exec format error。查了半天,发现是手残把脚本开头的#!/bin/sh的‘!’写掉了导致运行不了。这里可以去了解一下exec函数簇的执行,如果直接把exeve改为execlp是可以正常运行的。
   看了下书,UNIX高级编程上说,execlp和execvp会判断文件是不是二进制可执行文件,如果不是则认为是一个shell脚本,调用/bin/sh执行。而exeve则会调用你的脚本里的解释器执行,上面我手残把解释器哪一行写错了,所以无法执行,报格式错误。

  第二个错误点在一个if判断时一直报错,这个if是这么写的

  if [[ `grep ${item} /etc/resolv.conf` = "" ]]; then
        echo "set dns ${item}"
        echo "nameserver ${item}" >> /etc/resolv.conf
    fi 

  弄了半天发现是需要在 ` 外面加双引号,改成这样:

  if [[ "`grep ${item} /etc/resolv.conf`" = "" ]]; then
        echo "set dns ${item}"
        echo "nameserver ${item}" >> /etc/resolv.conf
    fi 

完。

你可能感兴趣的:(linux)