wuqiong 编纂
bsh 是sco open server中的用户缺省shell,也是许多其它OS中支持的shell。另外,由于ksh是bsh的扩展,几乎所有的bsh脚本都可在ksh中运行。所以有必要对bsh有所了解。
在sco open server中bsh命令位于/bin/sh,在某些系统中可能叫做/bin/bsh。
shell的启动和环境
1. shell启动时的选项
-a 将所有变量输出
-c "string" 从string中读取命令
-e 使用非交互模式
-f 禁止shell文件名产生
-h 定义
-i 交互式模式
-k 为命令的执行设置选项
-n 读取命令但不执行
-r 受限模式
-s 命令从标准输入读取
-t 执行一条命令,然后退出shell
-u 在替换时使用未设置的变量将会出错
-v 显示shell的输入行
-x 跟踪模式,显示执行的命令
以上不冲突的选项可以组合使用。
2. 执行sh -r 或者/bin/rsh可以进入受限模式。在受限模式下,
用户不能改变自己的目录,不能修改PATH变量,不能使用绝对路径名
执行命令,也不能重定向输出。
3. 使用set改变shell选项。
set -x 是加上该选项
set +x 是去掉该选项
4. 用户shell启动文件为.profile,你可以在该文件中添加环境变量和脚本。
5. shell环境变量
CDPATH cd命令使用的搜索路径
IFS 内部的域分隔符,一般为空格符、制表符或换行符
PS1 主命令提示符,默认$
PS2 从命令提示符 默认>;
特殊字符及其含义
1. shell变量名使用的特殊字符
$# 传给命令shell的参数个数
$- 在shell启动或者使用set命令时提供选项
$? 上一条命令执行后返回的值
$$ 当前shell的进程号
$! 上一个子进程的进程号
$@ 所有的参数,每个都用双括号括起。
$* 所有参数,用双括号括起。
$n 位置参数值,n表示位置。 $0是当前shell脚本名,$1是第一个参数,……
2. 通配符
ls [!m]* 寻找不以m开头的文件名
3. 数据或程序控制使用的特殊字符
` `命令替换,重定向一条命令的输出作为另一条命令的输入。(注意啦:是与单引号相反的那个符号`)
4. 使用双引号,始其中的变量形式可以引用值
使用\逃逸符,表示其后的字符不具有特殊含义或者不是shell的函数。
shell变量
9.2.1 用户定义变量
$count=1
$x=20 $y=aaaa
变量未赋值使用时,shell并不报告错误,而是给变量一个空值。
9.2.2 条件变量替换
${count:-2} 意义为:引用count变量,如果前面未设置该变量,则给其赋缺省值2
${count:?message} 意义为:引用count变量,如果前面未设置该变量,则显示message
9.2.3 readonly var 将var设置为只读变量
设置的变量都是在子shell中起作用,也就是说是局部变量。用export命令可以让变量被其他子shell识别。
运算及条件循环结构
9.3.6 对shell变量进行算术运算
expr integer operator integer
operator 有:+ - * / % 其中 * 要使用\*进行转义
没有括号进行优先运算,所以需要用``分层运算: expr `expr 5 + 7` / 3
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 变量 命令 shell 使用 command 执行 文件 时候 选项 |
注册
个人空间
