当前文章接着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编程中最常见的错误之一就...
shell中有很多命令适合对文本进行编辑,如grep,cut,sed,awk等,命令有很多,但没有哪个命令可以方便的通吃天下,而且由于shell命令的独特用法,用后即忘,现在记载于此,方便日后查询。
一、行操作
1.显示文件内容前10行
head -n 10 filename
2.显示文件内容后10行
tail -n 10 filename
3.显示指定的行数(2-5行)
se...
shell输入密码之具体代码实现
在做shell脚本开发时会涉及到密码输入,就像系统密码输入一下,在终端不能将密码显示出来,直接不显示或者显示为*号.
一,不显示密码
1.直接通过read -s不回显密码.
oen@oen ~/code/shell/passwd $ bash read-s.sh
Username: oenhan.com
Password:
-------------------
Username is:oenhan.com...
将二进制文件打包到shell脚本
之前因为要用支付宝更新浏览器插件,直接下载了一个aliedit.sh脚本,直接执行脚本,便搞定了插件的安装,正要称赞阿里的开发人员人性化了,转念一下,一个shell脚本就能搞定的安装,岂不是可以直接cat脚本就可得知支付宝监控工具的代码啦.
直接cat结果如下:
main()
{ SetStrings Mkdir ARCHIVE=...
正则表达式,就是用某种模式去匹配一类字符串的一个公式,用shell也有一段时间了,自诩对正则表达式也略微了解,却被正则表示式之道的题目难倒了,把文章的精华记录下来,工作中作为参考.
正则表达式有元字符和普通字符组成的,最终要理解元字符的意义.
1.元字符的意义
元字符
描述
.
匹配任何单个字符。例如正...
在公司事业部级的shell编程规范里提到了这么一条建议规范:
建议所有在shell中使用反单引号执行bash命令的脚本统一使用$()进行替换 如:echo `ls` 替换为 echo $(ls)
但Gaopei同学在整改代码的时候便出现了问题,一条shell语句直接终止,真是一条编程规范引发的血案
~ $ echo `df | sed 's////g' | tail -n 1`
/dev/sda...