Unix Shell小结1
来源:互联网 发布:卡密授权系统源码 编辑:程序博客网 时间:2024/06/02 03:15
A-2
在管道线开头放一个!,则以管道线中最后一条命令的推出状态的
逻辑反作为管道线的退出状态。
执行的每条命令都返回一个数值,称为退出状态,0表示成功,非0表示失败。
A-4 参数和变量
A-4-1 shell变量
参数有三种类型:shell变量、特殊参数和位置参数。
shell变量名必须以字母或下划线字符(_)开头,后面可以跟任意多个字母、数字或
下划线字符。用
variable=value variable=value ...
可以在命令行中给shell变量赋值。对value不进行文件名替换。
A-4-2 位置参数
每当shell程序执行时,程序名就被赋给变量$0,命令行中键入的参数依次分别赋给
变量$1,$2,...。也可以用set命令对位置参数赋值。
A-4-3 特殊参数
$# 传给程序的参数个数,或者执行set命令设置的参数个数
$* 对位置参数等的集中引用
$@ 跟$*相似,区别在于当加了双引号后("$@"),集中引用位置参数"$1","$2",...等
$0 正执行的程序名
$$ 正执行程序的进程id
$! 最后一个发到后台运行的程序的进程id
$? 最后一个在前台执行的程序的退出状态
$- 当前有效选项标志
shell使用的其他变量
CDPATH 每当cd命令的参数不包含完全路径时,就在这些目录中搜索
ENV 交互方式启动运行shell时,要在当前环境中执行的文件
FCEDIT fc使用的编译器,如果不设置就使用ed
HISTFILE 如果设置了,它规定用来存放命令历史的文件;如果没有设置,
或者它不可写入,则使用$HOME/.sh_history
HISTSIZE 如果设置了,则它规定编辑时可以存取的以前键入的命令数目;
如果没有设置,默认值为128
HOME 用户的宿主目录,如果cd命令没有参数则转到该目录
IFS 内部字段分隔字符,通常其中包含三个字符:空格,水平制表符和换行字符。
LINENO shell在正执行的脚本中设置的行号,开始执行一行之前设置该变量,
从1开始
MAIL shell周期性地在其中检查是否有邮件的文件名,如果有新邮件,shell就显示
“有邮件”信息。
MAILCHECK 规定shell每隔多少秒到MAIL规定的文件或MAILPATH规定的目录中检查是否
有新邮件。默认为600.
MAILPATH 检查有没有新邮件需要检查的文件清单。
PATH 由冒号分隔的目录列表,shell要查找需要执行的文件时就在这些目录中搜素。
当前目录用::或:.:表示(如果它在开头或结尾,用:就足够了)。
PPID 调用本shell的程序的进程(即父进程)id号码
PS1 主命令提示符,通常是"$"
PS2 次命令提示符,通常是">"
PS4 追踪执行时显示的提示符(-x选项的shell或set -x)。默认为"+"
PWD 当前工作目录的路径名
A-4-4 参数替换
参数后面的冒号表示要测试是否已设置了该参数并且不为空,如果没有冒号,只检查
设置过没有。
$parameter或${parameter} 替换参数的值
${parameter:-value} 如果设置了parameter并且不为空则替换为parameter的值,
否则替换为value
${parameter -value} 如果设置了parameter换为parameter的值,否则替换为value
${parameter:=value} 如果设置了parameter并且不为空则替换为parameter的值,
否则替换为value并将它赋给parameter
${parameter=value} ...
${parameter:?value} 如果设置了parameter并且不为空则替换为parameter的值,
否则把value写入标准错误并退出。如果跳过value,用parameter
null or not set代替
${parameter?value} ...
${parameter:+value} 如果设置了parameter并且不为空则替换为value的值,
否则替换为空
${parameter+value} ...
${#parameter} 替换为parameter的长度,如果parameter是*或@则结果不确定
${parameter#pattern} 把pattern从parameter左边删除,替换所得的结果,删除时采用最小匹配;
其中可以使用文件名替换字符(*,?,[...],!和@等)
${parameter##pattern} 跟#pattern相似,区别是删除时使用最大匹配
${parameter%pattern} 跟#pattern相似,区别是从右边删除
${parameter%%pattern} 跟##pattern相似,区别是从右边删除时使用最大匹配
A-5 命令重返
A-6 引用
shell可以识别四种引用机制
'...' 去掉引号中所有字符的特殊意义
"..." 去掉引号中除$,'和/外所有字符的特殊意义
/c 去掉反斜杠之后的字符c的特殊意义。用在双引号中时,如果反斜杠后是
$,',",换行或/,则去除这些字符的特殊意义,否则不做解释;用在行尾时
作为续行符号(去掉换行字符)
'commnd'或
$(command) 执行command,并将它的标准输出插入该位置
A-6-1 代字符替换
shell会检查命令行中的每一个词和变量是否以没被引用的~开头,如果是,则把该词
其他部分一直到/之间的内容作为一个登陆名看待,并在系统文件(一般是/etc/passwd)中查找,
如果找到该用户则用他的宿主目录替换字符和用户名,如果用户名不存在,则不作变化。
如果只有~或后面直接跟/,则替换为HOME变量值。
A-6-2 算术表达式
一般格式:$((expression)),shell计算整数算术表达式expression的值。
A-7 文件名替换
在对命令行的参数替换(和命令替换)完成之后,shell查找特殊字符*,?和[。
如果它们没被引用,则shell在当前目录中(如果前面加了/则在另一个目录中)搜索,
把所有匹配的文件名替换进去(shell首先对文件名排序)。如果没有找到匹配,则原来的
内容保持不变。
注意,以.开头的文件名必须显示地匹配(故echo * 不能显示隐含文件,而echo .*可以)。
A-9-1 (...)结构
如果把一条或多条命令放在小括号中,它们就会在子shell中执行。
A-9-2 {...;}结构
如果把至少一条命令放在大括号中,这些命令就由当前shell执行。
A-9-2深入shell变量
在命令行中的命令行之前加上对参数的赋值,可以shell变量放在一条命令的环境中。
- Unix Shell小结1
- UNIX Shell 编程(1)
- unix-shell-1
- UNIX信号小结(1)
- Unix Shell学习笔记【1】
- Unix Shell 编程 (1)
- Unix Shell 介绍(1)
- Unix Shell
- unix shell "$"
- Unix shell
- Unix-Shell
- 【shell】sed学习小结1
- shell 命令小结1 201406
- 1 shell编程小结---开篇
- Shell 脚本学习小结-1
- Shell小结
- shell小结
- shell小结
- ZedGraph解析
- 计算几何初步认识
- 穷人和富人的区别
- 关于ASP.NET分配端口与浏览器调用端口不一致的问题
- struts解决表单重复提交方法!
- Unix Shell小结1
- Socket实例1--POP3客户端程序
- Filesystem Hierarchy Standard Group
- 《系统程序员成长计划》成长过程
- 在linux上使用BIND建立DNS服务器(1)
- Android高手进阶教程(一)-------Android常用名令集锦(图文并茂)!
- InvalidateRect()与Invalidate()的用法
- ADS中堆地址的设置方法
- 字符串分割函数strtok的用法