• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > awk中让人郁闷的system()函数

awk中让人郁闷的system()函数

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了awk system,awk 函数,awk 内置函数,awk 字符串函数,awk substr函数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

发现一个特尴尬的事实。我辛辛苦苦去百度资料,想用rewrite实现针对不同域名源站故障后的自动跳转功能,但整个思路里遗漏了一个严重的问题。

按我的思路,针对请求的url进行一次curl,然后根据http_code去改写url或者原样输出——这也就意味着,每一个请求,squid都回源去取一次header。那么对于源站来说,前面squid的缓存率,就是0%!完全没有效果。

得重新想过办法……难道去看squid源代码?汗

本着有头有尾善始善终的原则,决定还是把原先那个鸡肋想法写完。根据squid权威指南11章的说法,传递给重定向器的流格式为:URL IP/FQDN IDENT METHOD,其中FQDN和ident经常是空。METHOD,一般是GET和POST,squid只能缓存GET的数据,但不能无视POST方式,因为有时候POST数据header太大的话,squid可能拒绝转发这些内容,这就不好玩了。

在明确这个格式以后(主要是草草收尾的想法影响下),我便觉得其实完全不用perl或者php来搞,简单的awk就足够了——当然,shell不行,因为shell不能从事这种流状的行处理。

以下是本着我想法写的awk脚本:

但是再度让我郁闷的事情接连发生。

第一,不管我在{}中进行什么操作,程序都把system()的结果print出来了;

第二,即使system()的结果是200,print出来的也是else{}的”http://www.baidu.com”;而如果我直接试验if(200~/^[2 3]/){}else{},结果就很正常!

试验过程如下:

思前想后,在百度大婶的帮助下,终于搞明白一个问题:system()的结果是直接返回给shell显示了,然后再由awk继续执行后面的程序,这种情况下,if()里留下的其实是system()的执行状态【即0或1】”0”~/^[2 3]/,当然就一直执行else了。

糟糕的问题是awk的getline,无法直接把system()的执行结果导入awk的变量…除非我先system里>一个文件,然后getline<这个文件。MyGod!

而如果采用while(“curl” getline var)的执行方式,如何传递shell变量进去又成了问题……唉

</div>

您可能想查找下面的文章:

  • awk中让人郁闷的system()函数

相关文章

  • 使用shell检查并修复mysql数据库表的脚本
  • Shell中取今天、昨天、前天的时间操作代码
  • linux awk时间计算脚本及awk命令详解
  • Shell处理带空格的文件名的方法
  • Shell实现的Oracle启动脚本分享
  • linux shell数组深入学习理解
  • shell(bash)下“time” 命令的输出详解
  • linux awk时间计算脚本及awk命令详解
  • 一个简单的linux命令 mv
  • 把文件复制N份的2个Shell脚本代码

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 简单的远程FTP定时备份Shell脚本分享
    • Linux shell 之 提取文件名和目录名的一些方法总结
    • Shell使用Epoch进行日期时间转换和计算的几个小函数
    • Shell多线程操作及线程数控制实例
    • Shell命令批量修改图片文件名
    • 如何编写健壮的Bash脚本(经验分享)
    • 获取站点的各类响应时间(dns解析时间,响应时间,传输时间)
    • Git 创建分支提交远程分支详解
    • 用expect实现ssh自动登录服务器并进行批量管理的实现方法
    • shell脚本编程之case语句学习笔记

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有