今天接到一下case, 说是用bash用的一个程序有点问题,要我看一下。
进到现在这个项目组里, 基本上什么语言都用过了, service是C语言写的, WS是Java写的, 有python写处理quanratine email的程序, 有ruby写的UI WS, 有perl写的postfix 的插件. 有bash写的文件同步功能。
对bash从一开始的不了解, 到现在基本了解一点, 但深层次的东西,要慢慢的学习啊。
首先是debug功能, bash也是类似高级语言的__FILE__, 和__LINE__的内容, 如下
还遇到关于declare 的语法, 不知道是什么意思, google了一下,
如果一个变量只想接受整形的赋值, 可以使用declare -i varname
declare -a varname 代表将varname声明成数组变量, 但是这个不是必须的。 在bash里所有的变量都可以被用作数组处理而不需要显式的声明。
下面是关于对options的处理
getopts的基本用法:
比如:
对于 $OPTARG是针对每个参数都有的。
noclobber
shell提供了一种称为noclobber的特性,该特性可防止重定向时不经意地重写了已存在的文件。通过设置变量noclobber可以将此特性打开。打开后若将输出重定向到某个已存在文件,则shell将报告错误消息,并且不执行重定向命令。如果前面的示例产生了下面的消息之一,则设置了 noclobber特性。下面的示例首先打开noclobber特性,然后是将echo的输出重定向到已存在文件,最后是关闭noclobber特性。
$ set -o noclobber
$ echo "hi there" > tmp
bash: tmp: Cannot overwrite existing file
$ set +o noclobber
$ echo "hi there" > tmp