1、
exec 3>&1 #在当前SHELL环境中将文件标识3与标准输出相关联(备份一个stdout)
exec 3>&- #为SHELL后续代码关闭文件标识3
2、 &>/dev/null解释
:> 代表重定向到哪里,例如:echo "123" > /home/123.txt:/dev/null 代表空设备文件
:2> 表示stderr标准错误
:& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
:1 表示stdout标准输出,系统默认值是1, 所以">/dev/null"等同于 "1>/dev/null"
3、Shell变量名使用的特殊字符:
$# 传送给命令Shell的参数序号 个数
$- 在Shell启动或使用set命令时提供选项
$? 上一条命令执行后返回的值
$$ 当前shell的进程号
$! 上一个子进程的进程号
$@ 所有的参数,每个都用双括号括起
$* 所有参数,用双括号括起
$n 位置参数值,n表示位置
$0 当前shell名
$? 是上个命令行执行是否成功,成功为0
4、if判断总结 http://ctwen.iteye.com/blog/2001423
条件表达式
文件表达式
if [ -f file ] 如果文件存在
if [ -d ... ] 如果目录存在
if [ -s file ] 如果文件存在且非空
if [ -r file ] 如果文件存在且可读
if [ -w file ] 如果文件存在且可写
if [ -x file ] 如果文件存在且可执行
整数变量表达式
if [ int1 -eq int2 ] 如果int1等于int2
if [ int1 -ne int2 ] 如果不等于
if [ int1 -ge int2 ] 如果>=
if [ int1 -gt int2 ] 如果>
if [ int1 -le int2 ] 如果<=
if [ int1 -lt int2 ] 如果<
字符串变量表达式
If [ $a = $b ] 如果string1等于string2
字符串允许使用赋值号做等号
if [ $string1 != $string2 ] 如果string1不等于string2
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 为空
if [ $sting ] 如果string 非空,返回0 (和-n类似)
5、read参数
http://www.cnblogs.com/nwf5d/archive/2011/11/20/2255702.html
http://blog.163.com/niuxiangshan@126/blog/static/170596595201271215933154/
#延迟五秒,没有输入将自动退出 read -p "Input a number:" -t 5 Number
6、数组总结http://c.biancheng.net/cpp/view/7002.html
array_name=(value0 value1 value2 value3)
NAME[0]="Zara" NAME[1]="Qadir" NAME[2]="Mahnaz" NAME[3]="Ayan" NAME[4]="Daisy" echo "First Index: ${NAME[0]}" echo "Second Index: ${NAME[1]}"
$./test.sh First Index: Zara Second Index: Qadir使用@ 或 * 可以获取数组中的所有元素,例如:
NAME[0]="Zara" NAME[1]="Qadir" NAME[2]="Mahnaz" NAME[3]="Ayan" NAME[4]="Daisy" echo "First Method: ${NAME[*]}" echo "Second Method: ${NAME[@]}"运行脚本,输出:
$./test.sh First Method: Zara Qadir Mahnaz Ayan Daisy Second Method: Zara Qadir Mahnaz Ayan Daisy
获取数组长度的方法与获取字符串长度的方法相同,例如:
# 取得数组元素的个数 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得数组单个元素的长度 lengthn=${#array_name[n]}