当前文章接着Bash编程陷阱一写下来。 24. for arg in $* bash使用$*或者$@来承担脚本的所有入参,但用for遍历的时候需要注意 for arg in "$@" # 或者更简单的写法 for arg 这里的$@需要添加上"",此处的"$@"相当于"$1","$2","$3",而非"$1 $2 $3" 加引号的目的自然是预防空格,如果$1存在空格,那么就多出一个参数 25. f...

Bash编程陷阱:bash-pitfalls里面介绍了43条shell陷阱,都是一些很常见的应用场景,新手和老手都有可能犯的错误,为了加深记忆,自己就大致记录下来,英文文章用wiki编辑,条目随时可能增加,建议直接看英文。 如下的内容不完全翻译原文,穿插了一些自己的修改。 1. for i in $(ls *.mp3) bash编程中最常见的错误之一就...

当超群发来的问题,一个低端内存耗尽导致系统panic的问题,通过写一个死循环循环调用同一个脚本,然后盯着/proc/slabinfo看,就会发现size-32类型的slab火速增加。通过简单直接有效古老的排除法(感谢每日持续集成编译),确定是内核的问题,老的内核没问题,新内核有问题,本来直接上大神器,kmemcheck,奈何看了一眼内...

正则表达式,就是用某种模式去匹配一类字符串的一个公式,用shell也有一段时间了,自诩对正则表达式也略微了解,却被正则表示式之道的题目难倒了,把文章的精华记录下来,工作中作为参考. 正则表达式有元字符和普通字符组成的,最终要理解元字符的意义. 1.元字符的意义 元字符 描述 . 匹配任何单个字符。例如正...

在公司事业部级的shell编程规范里提到了这么一条建议规范: 建议所有在shell中使用反单引号执行bash命令的脚本统一使用$()进行替换 如:echo `ls` 替换为 echo $(ls) 但Gaopei同学在整改代码的时候便出现了问题,一条shell语句直接终止,真是一条编程规范引发的血案 ~ $ echo `df | sed 's////g' | tail -n 1` /dev/sda...