1.当一个shell脚本程序执行时,一些变量会随着环境的设置进行初始化。
$HOME:当前用户的家目录。
$PATH:用冒号分割的用来搜索命令的列表。
$IFS:输入域分割符
$0:shell脚本的名字
$#:传递给shell脚本的参数个数
$$:shell脚本的进程号
$?:上一个命令的退出值Last command or function's return value.
$!: Last program's PID.上一个进程的pid,例如用在shell脚本中用这个语句启动一个新进程nohup a.sh;echo $!就可以输出a.sh的pid。
2.可以使用export在子shell中设置环境变量。
3.$1,$2,$3....表示依次传入shell的参数,$*是指列出所有输入参数,$@也是所有输入参数,但不受$IFS影响。
4.可以用read +参数名来从控制台读取参数输入变量。
5.shell执行时 在末尾加入&可以在后台执行。
6.IFS=‘’可以设置环境变量,使用unset IFS取消环境变量设置,回到默认。
7.if [ $var = "yes"] 与 “$var” = "yes"的区别,当c$var为空时前者会报shell错误,后者不会,因为解析后前者是if [ = "yes"],后者是if [ “” = "yes"]
8.#!/bin/sh
9.eval命令允许对参数进行求值,类似于一个额外的$,它允许对代码随时的生成和运行,例如 y='$'$x;eval z=$y,那么z的值就变成了x的值。
10.exec的用法,exec后面接执行命令。将当前shell替换成执行程序,执行程序的进程id变成当前shell的,exec后面一行的命令不会再执行了。
nohup命令也可以在当前命令中执行一个新程序,但不是替换。新程序有新的pid。
11.export导出变量,使变量在子shell中也是可用的。
12.用反引号或者$取得命令的执行结果,使命令执行,如x=`expr $x + 1`;或者x=$(expr $x + 1);
13.expr表达式
14.set的作用,set可以为当前shell设置参数变量,许多命令的输出结果是以空格分割的,如果需要输出某个域的值就可以用这个命令。如set $(date),然后用$2就可以取得月份的值。
15.shift命令的作用,将参数全都左移一位,$0不变,原先$1的丢弃,$2编程$1.
16.ps -p pid这个进程的使用时间;如果有这个进程,返回true。
top实时监控当前进程及性能
16.trap命令,用于指定接收到信号要执行的命令。trap command signal。如trap 'rm -R file' INT,INT是中断信号。如果要重置某个信号的处理方式到默认值,可以将command设为-。
17.find命令,参考linux程序设计第70页。
18.grep命令。
19.正则表达式