Shell: Shell中while循环的陷阱, 变量实效, 无法赋值变量

  在写while循环的时候,发现了一个问题,在while循环内部对变量赋值、定义变量、数组定义等等环境,在循环外面失效。 一个简单的测试脚本如下: #!/bin/bash echo "abc xyz" | while read line do new_var=$line done echo new_var is null: $new_var? 执行结果证明,$new_var的结果是空值。在google上查了查,才发现问题出在管道上。加上自己的总结,特分享两个使用while循环时的陷阱。… Read More

Linux Shell:使用 SendGrid Email API 发送邮件, SendGrid App for google cloud platform, php, phython, shell script 发送邮件

什么是 SendGrid 电子邮件服务? SendGrid 是一项基于云的电子邮件服务,该服务提供了可靠的事务电子邮件传递、伸缩性、实时分析以及可用于简化自定义集成的灵活的 API。 常见 SendGrid 使用方案包括: 自动向客户发送收据 管理用于每月向客户发送电子传单和特惠产品/服务的通讯组列表 收集诸如已阻止的电子邮件和客户响应性等项目的实时度量值 生成用于帮助确定趋势的报告 转发客户查询 以电子邮件的形式从应用程序发送通知 有关详细信息,请参阅 https://sendgrid.com。 创建 SendGrid 帐户… Read More

Linux: Apache索引(目录浏览)设置, 禁止 Apache 显示目录索引, 自定义索引(目录浏览)样式

在浏览一些镜像文件站的时候,会发现网站目录是可以浏览文件(夹)列表的。只要 Web 服务器是基于 Apache 的网站都可以开启或禁止索引(目录浏览),那么如何实现禁止和开启显示目录索引呢? 一、禁止 Apache 显示目录索引 方法1、修改Apache配置文件[apache2.conf] # sudo vi /etc/apache2/apache2.conf # 没有的话,可以尝试 # sudo vi /etc/apache2/sites-available/000-default.conf #… Read More

Shell:无比强大的shell之json解析工具jq , Linux命令行解析json, jq解析 json 实例

  JSON是前端编程经常用到的格式,对于PHP或者Python,解析JSON都不是什么大事,尤其是PHP的json_encode和json_decode,干的相当的漂亮。Linux下也有处理处理JSON的神器:jq。 对于JSON格式而言,jq就像sed/awk/grep这些神器一样的方便,而也,jq没有乱七八糟的依赖,只需要一个binary文件jq,就足矣。下面我们看下jq的使用。 1. 安装 官网:https://stedolan.github.io/jq/download/ Linux jq 1.5 is in the official Debian and Ubuntu repositories. Install using sudo… Read More

Linux Shell系列教程之(十八) Shell 基本运算符

Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。 expr 是一款表达式计算工具,使用它能完成表达式的求值操作。 例如,两个数相加(注意使用的是反引号 ` 而不是单引号 ‘): #!/bin/bash val=`expr… Read More

Linux: shell实现多线程, Forking / Multi-Threaded Processes | Bash, shell 线程池

按照shell语法,后一个前台命令必须等待前一个前台命令执行完毕才能进行,这就是所谓的单线程程序。如果两条命令之间有依赖性还好,否则后一条命令就白白浪费了等待的时间了。 网上查了一遍,shell并没有真正意义上的多进程。而最简单的节省时间,达到“多线程”效果的办法,是将前台命令变成后台进程,这样一来就可以跳过前台命令的限制了。 引用网上例子: 实例一:全前台进程: #!/bin/bash #filename:simple.sh starttime=$(date +%s) for ((i=0;i<5;i++));do { sleep 3;echo 1>>aa && endtime=$(date +%s) && echo "我是$i,运行了3秒,整个脚本执行了$(expr… Read More

Linux:cURL 命令详解,以及实例, curl auth, curl 模拟登陆,快速网站测压, curl 爬虫, curl Command Download File Example, How to quickly stress test a web server

  linux curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具。 一,curl命令参数,有好多我没有用过,也不知道翻译的对不对,如果有误的地方,还请指正。 -a/--append 上传文件时,附加到目标文件 -A/--user-agent <string> 设置用户代理发送给服务器 - anyauth 可以使用“任何”身份验证方法 -b/--cookie <name=string/file> cookie字符串或文件读取位置 - basic 使用HTTP基本验证 -B/--use-ascii 使用ASCII… Read More

Linux: SSH报错 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 解决方案, Remove key from known_hosts, Fix Offending key in ~/.ssh/known_hosts file

  今天是用google cloud ssh登录的时候,发生以下报错: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS… Read More