首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

推荐Bash增高资料:写出健壮的Bash脚本

2012-08-10 
推荐Bash提高资料:写出健壮的Bash脚本写出健壮的Bash脚本本文链接:http://codingstandards.iteye.com/blog

推荐Bash提高资料:写出健壮的Bash脚本
写出健壮的Bash脚本

本文链接:http://codingstandards.iteye.com/blog/1458592

?

也就是在Bash中使用防御性编程。

对于引用变量,最好写在双引号中,而不是让它裸奔

?

因为VAR变量的值中包含空白时,就有可能造成程序出错

?

使用 "$@" 而不是 $@

因为如果某个参数中包含空白时,不加引号的$@会有问题,含空格的参数将会分裂成多个

?

?

处理信号 signal

在编写C代码时通常会在程序开始时使用signal()设置信号处理函数,使程序更加健壮。

在Bash中,可以使用 trap 对信号处理,比如删除临时文件、杀死进程等。

?

trap command signal [signal ...]

?

避免出现竞态条件if ( set -o noclobber; echo "$$" > "$lockfile") 2> /dev/null; thentrap 'rm -f "$lockfile"; exit $?' INT TERM EXIT#critical-sectionrm -f "$lockfile"trap - INT TERM EXITelseecho "Failed to acquire lockfile: $lockfile"echo "held by $(cat $lockfile)"fi

?

?

保持原子化(事务化)

要么全部做,要么什么都不做。

比如:下面的代码展示的将文件中的一个字符串替换成另一个字符串,保证所有文件都被替换,或者都不被替换。

思路是先把要处理的文件复制到一个临时目录,进行替换操作,然后再替换原来的。即使 Ctrl+C 终止,也不会出现部分被替换的情况。

?

cp -a /var/www /var/www-tmpfor file in $(find /var/www-tmp -type -f -name "*.html"); doperl -pi -e 's/www.example.net/www.example.com/' $filedonemv /var/www /var/www-oldmv /var/www-tmp /var/www
?

更详细的内容,请参看

http://sd.csdn.net/a/20120319/313229.html

?

?

?

   
谢谢支持! 3 楼 五月天 2012-03-21   收藏一下,有时间慢慢看下

热点排行