Bash 变量语法问题



我在格式化我正在尝试处理的这个 bash 脚本中的第一行时遇到了一些问题,它应该在文件中查找 #Server 行,然后在它下面的行上打印$newip。

理想情况下,我希望$newip看起来像这样:

route 74.125.141.102 255.255.255.255 net_gateway

但是当我尝试运行脚本时,出现了一些问题,因为我得到的只是:

awk: fatal: cannot open file `255.255.255.255' for reading (No such file or directory)

这是我的完整 bash 脚本:

newip="route $(dig google.com +short | (head -n1 && tail -n1)) 255.255.255.255 net_gateway"
awk -v newip=$newip '{
  if($1 == "#Server"){
    l = NR;
    print $0
  }
  else if(l>0 && NR == l+1){
    print $newip
  }
  else if(l==0 || NR != l+2){
    print $0
  }
}' serverip > serverip.tmp
mv -f serverip.tmp serverip

(顺便说一句,如果你想知道这个脚本是做什么用的,它最终会被用来为我的OpenVpn配置添加某个网站的例外)

我知道这是愚蠢的事情,比如在第一行添加一组额外的引号或括号,但我不知道该怎么做。

您需要在

awk命令行中对newip的引用两边加上双引号:

awk -v newip="$newip" '{ … }' serverip > serverip.tmp

现在newipawk脚本中的一个 4 字变量值,可以在显示时打印。

相关内容

  • 没有找到相关文章

最新更新