shell 阅读笔记-基本命令
1.shell输入与输出
echo
-n 不要输出NEWLINE
-e 使控制字符起作用,及ENABLE INTERPRATE THE BACKSLAH
read 从命令行读入数据
cat 输出到屏幕(或者标准输出1)
管道 上一个的输出作为输入
tee 输出的同时在屏幕上显示结果
重定向标准输出,重定向标准输入,重定向标准错误
command > filename 把把标准输出重定向到一个新文件中
command >> filename 把把标准输出重定向到一个文件中(追加)
command 1 > fielname 把把标准输出重定向到一个文件中
command > filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中
command 2 > filename 把把标准错误重定向到一个文件中
command 2 >> filename 把把标准输出重定向到一个文件中(追加)
command >> filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中(追加)
command < filename >filename2 把command命令以filename文件作为标准输入,以filename2文件作为标准输出
command < filename 把c o m m a n d命令以f i l e n a m e文件作为标准输入
command << delimiter 把从标准输入中读入,直至遇到d e l i m i t e r分界符
command <&m 把把文件描述符m作为标准输入
command >&m 把把标准输出重定向到文件描述符m中
command <&- 把关闭标准输入
command >/dev/null 2>&1 不显示任何内容
2.命令执行顺序 || &&
||前面一个为真则退出,否则执行后面一个,返回0(TRUE)
&&前面一个为真,则执行后面一个,否则退出。且返回1(FALSE)
用()和{ }将命令结合在一起
3.条件测试
test condition
或者
[condition]
测试文件状态
*权限问题
-x exist && excute
-r exist && read
-w exist &&write
*存在问题
-e exist
-s exitst &&size>0 not empty
*设备问题
-f regular file
-b block device
-c char device
-d directory
-L 符号连接
-a 逻辑与,操作符两边均为真,结果为真(0),否则为假(1)。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真
字符串测试
= 两个字符串相等。
!= 两个字符串不等。
-z 空串 zero
-n 非空串nonzero
测试数值
[ "number " numeric_operator "number" ]
numeric_operator 可为:
-eq 数值相等。
-ne 数值不相等。
-gt 第一个数大于第二个数。
-lt 第一个数小于第二个数。
-le 第一个数小于等于第二个数。
-ge 第一个数大于等于第二个数
4.数值计算
expr命令一般用于整数值,但也可用于字符串。一般格式为:
expr argument operator argument
expr 也是一个手工命令行计数器。
使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。
增量计数
expr 在循环中用于增量计算。首先,循环初始化为0,然后循环值加1,反引号的用法意
即替代命令。最基本的一种是从expr命令接受输出并将之放入循环变量。
5.特定变量参数
既然已经知道了如何访问和使用shell脚本中的参数,多知道一点相关信息也是很有用的,
有必要知道脚本运行时的一些相关控制信息,这就是特定变量的由来。共有7个特定变量,
特定shell变量
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
$$ 脚本运行的当前进程I D号
$! 后台运行的最后一个进程的进程I D号
$@ 与$#相同,但是使用时加引号,并在引号中返回每个参数
$- 显示s h e l l使用的当前选项,与s e t命令功能相同
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误