`

Unix Shell小结1

阅读更多

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 内部字段分隔字符,通常其中包含三个字符:空格,水平制表符和换行字符。
LINENOshell在正执行的脚本中设置的行号,开始执行一行之前设置该变量,
从1开始
MAILshell周期性地在其中检查是否有邮件的文件名,如果有新邮件,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变量放在一条命令的环境中。


分享到:
评论

相关推荐

    LINUX与UNIX SHELL编程指南(很全)

    1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改...

    LINUX与UNIX SHELL编程指南

    第十五章 小结 第四部分 基础SHELL编程 第十六章 SHELL脚本介绍 第十七章 条件测试 第十八章 控制流结构 第十九章 SHELL函数 第二十章 向脚本传递参数 第二一章 创建屏幕输出 第二二章 创建屏幕输入 第二三章 调试...

    绝版经典 LINUX与UNIX SHELL编程指南 PDF 高清版 [16.3M]

    第十五章 小结 第四部分 基础SHELL编程 第十六章 SHELL脚本介绍 第十七章 条件测试 第十八章 控制流结构 第十九章 SHELL函数 第二十章 向脚本传递参数 第二一章 创建屏幕输出 第二二章 创建屏幕输入 第二三...

    unix--shell的一些特殊参数小结

    Unix Shell 编程一些常用但是又容易忘记的东西。 描述参数输入、回车换行、以及算法。

    Linux与unix shell编程指南

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell ...

    Linux与Unix Shell编程指南(PDF格式,共30章)

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 ...

    绝版经典《Linux与UNIX Shell编程指南》

    1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改...

    LINUX与UNIX SHELL编程指南 高清PDF

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell...

    Linux与UNIX Shell编程指南.rar

    第十五章 小结 第四部分 基础SHELL编程 第十六章 SHELL脚本介绍 第十七章 条件测试 第十八章 控制流结构 第十九章 SHELL函数 第二十章 向脚本传递参数 第二一章 创建屏幕输出 第二二章 创建屏幕输入 第二三章 调试...

    Linux与unix shell编程指南1.rar

    1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改...

    Linux与UNIX Shell编程指南.

    第十五章 小结 第四部分 基础SHELL编程 第十六章 SHELL脚本介绍 第十七章 条件测试 第十八章 控制流结构 第十九章 SHELL函数 第二十章 向脚本传递参数 第二一章 创建屏幕输出 第二二章 创建屏幕输入 第二三章 调试...

    LINUX与UNIX Shell编程指南

    1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改...

Global site tag (gtag.js) - Google Analytics