-----------shell函数-----------------
shell函数里调用参数的转换以下划线开始,后加变量名,如:_filename。
function function_name()
{
_filename=$1 #$1表示第一个参数,$#表示参数的个数,$@表示所有参数
function_body
}
调用函数时格式为function_name xrags1 xrags2
-----------exec的用法----------------
exec 4>$filename_bak,以写方式打开$filename_bak,作为4号文件描述符,这样后续的echo "xxx">&4就相当于把xxx写入$filename_bak中。
exec 3<$filename,以读方式打开$filename,作为3号文件描述符,这样后续的read xxx<&3就相当于从$filename中读一行到变量xxx。
-----------向shell传递脚本-----------
shift,使参数往右偏移;如opts file1 file2,使用shift后,第一个参数变为file2;
shift是否会取到参数值?如opts -l file,那么$1是什么,-l还是file?
答:$1是-l
getopts不能直接处理长的选项(如:--prefix=/home等)
关于getopts的使用方法,可以man bash 搜索getopts
getopts有两个参数,第一个参数是一个字符串,包括字符和“:”,每一个字符都是一个有效的选项,如果字符后面带有“:”,表示这个字符有自己的参数。getopts从命令中获取这些参数,并且删去了“-”,并将其赋值在第二个参数中,如果带有自己参数,这个参数赋值在“OPTARG”中。提供getopts的shell内置了OPTARG这个变变,getopts修改了这个变量。
这里变量$OPTARG存储相应选项的参数,而$OPTIND总是存储原始$*中下一个要处理的元素位置。
while getopts ":a:bc" opt #第一个冒号表示忽略错误;字符后面的冒号表示该选项必须有自己的参数
-----------trap捕捉信号-------------
trap "do_something" signal no:(s)
如trap "my_exit" 1 2 3 15,当捕捉到1、2、3、15信号时,执行my_exit。
阅读(623) | 评论(0) | 转发(0) |