wu

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
SHELL是一个工具程序,是用户与内核交互的接口。
要清除僵尸进程,必须重启
改变文件所有者:chown root filename 
bash: declare -x 定义局部变量; declare -a 定义数组;
`ls`和$(ls)在bash下同样。
整型算术运算 ((n= $j+$k)); 
数值比较的问题:
    有2种:1.类似C语言的比较,用(())包含,比如if (( $n < 100 )) 2.用-le来比较,要用[],比如if [ $n -le 100 ], (注意空格的问题)
grep 对双引号中的$变量进行展开替换,单引号不展开
egrep 扩展了一些正则表达式的元字符(+?等),fgrep 不对任何正则表达式进行扩展,所以比较快。(关于正则表达式的字符集介绍在4.8节的表)
sed里的分隔符可以用\自定义,也支持\的转义字符。-n 取消默认的打印。替换:s,紧跟在s后的字符就是分隔符,默认是/


awk $0保存当前行,NR记录当前的行号;NF保存当前行的记录个数。FS是字段分隔符,-F选项来自定义。RS是记录分隔符。(RS="";FS=":")
awk分模式和操作,模式由正则表达式或if语句,操作为{}内分号分隔的操作。操作紧跟在模式后,操作内永远不会有模式。
匹配操作符~,用于对表达式进行匹配。
BEGIN{} 开始时都会优先执行,END{}则在最后执行。
输入重定向用getline,输出重定向用>或>>。getline遇到文件不存在时,会返回-1,当心while死循环
用户自定义的变量不能以数字开头。
{if(){;;} else if(){;;}}
for和while与C类似
next语句:从输入文件中取出下一行输入,然后从awk脚本的顶部重新开始执行。
exit(1) 终止awk的执行
split(string,array,FS)。 delete 删除数组元素
ARGC,ARGV 命令行参数,与C类似


awk内置函数:6.21和6.26
sub,gsub,
index(字符串,子串)
length(字符串)
substr
toupper,tolower
6.22 内置的算术运算符
执行shell命令给一个变量:类似awk 'BEGIN {"date"| getline d;print d }'
SHELL中,&&和||用于条件命令的执行,括号可对命令进行编组。单引号可以保护特殊字符不被解释,双引号也能这样,但它允许$和\来被解释。引号一定要成对匹配。
exec能在不启动新进程的前提下,将当前的程序替换为一个新的程序,常被用来打开文件进行读写。
---
Bash脚本:第八章
脚本中没有内置算术运算,可以使用expr来进行整数运算,awk或bc来执行浮点运算。expr中用\*
=赋值之间不要加空格分隔。
break和continue后都可以跟一个数字。
here文档
循环中的输入和输出可以被重定向。
$IFS:shell的内置字段分隔符。
(shell中的函数更像是一个宏定义,使用时展开)
trap命令控制程序接收到信号的行为。
sh -x,-n命令来调试脚本。
type CMD : 打印出命令的类型
set -o 列出当前shell的选项
创建变量: declare 名字=值
printf已经是bash的一个内置命令
let命令:bash shell的内置命令,执行整型算术运算和数值表达式测试,带有丰富的类C运算符,双远括号代替let命令。
declare -i num;num="4* 2" 此时,num将被计算为8。let "num = 4 * 2" 同样效果,不需声明
用不同的进制方式来声明变量:num=base#value (前面要有declare -i 声明)
${num:?"need val"} : :?检查num是否有值
null命令:冒号表示,无操作,只是返回退出状态0
调试:set -x 开启echo,set +x 关闭echo
 

posted on 2012-05-05 13:02  butterflydog  阅读(281)  评论(0编辑  收藏  举报