认识 shell 和基本运算符
1. 什么是 shell 脚本:
Shell 是一个用 C 语言编写的程序, 它是用户使用 Linux 的桥梁. Shell 既是一种命令语言, 又是一种程序设计语言.
Shell 是指一种应用程序, 这个应用程序提供了一个界面, 用户通过这个界面访问操作系统内核的服务.
2. 查看本机现有解释器:
cat /etc/shells
3. 修改用户的 shell 解释器:
useradd -s /bin/ksh zhangsan [创建用户张三的时候指定登陆 shell]
usermod -s /bin/ksh zhangsan [修改已有用户张三的登陆 shell]
4. 查看历史命令:
history
vim /etc/profile [进入配置文件]
HISTSIZE=1000 [可修改默认历史数量]
history -c [清空历史命令]
5. 历史命令的应用:
![序号] [再次执行该序号的命令]
!cat [再次执行最近以 cat 开头的命令]
6. 重定向标准输入 / 输出 / 错误输出
> 将命令执行的正常输出重定向到文件
>>: 只收集前面命令的正确输出
2>: 只收集前面命令的错误输出
&>: 前面命令的正确与错误输出
>&2: 将正确的输出结果变成错误的输出
运算符:
1.expr [注: 数字间有空格]
- [root@server0 ~]# expr 10 % 3 [求 10 与 3 的余数]
- 1
- 2.$[]
- [root@server0 ~]# echo $[5*3] [求 5 乘 3]
- 15
- [root@server0 ~]# x=5 [分别为 x 和 y 赋值并求乘积]
- [root@server0 ~]# y=10
- [root@server0 ~]# echo $[x*y]
- 50
3.let [不显示结果]
- [root@server0 ~]# x=6
- [root@server0 ~]# y=6
- [root@server0 ~]# let i=x+y
- [root@server0 ~]# echo $i
- 12
简写运算:
- [root@server0 ~]# x=5
- [root@server0 ~]# let x++ [为 x 值加 1]
- [root@server0 ~]# echo $x
- 6
- [root@server0 ~]# x=5
- [root@server0 ~]# let x+=5 [为 x 值加 5]
- [root@server0 ~]# echo $x
- 10
let x*=5 [为 x 值晨乘 5]
let x/=5 [为 x 值除以 5]
let x%=5 [为 x 值取余]
4.bc [计算器]
- 5+5
- 10
5. 取小树点后 x 位
scale=x
取小数点后两位
- [root@server0 ~]# echo "scale=2;2/10" | bc
- .20
6. 比较: test 或 [ 参数 = 参数 ] [括号内一定要有空格]
- [root@server0 ~]# [ a = a ]
- [root@server0 ~]# echo $? [判断是否执行]
- 0
7. 判断空值 -z
- [root@server0 ~]# [ -z $p ]
- [root@server0 ~]# echo $?
- 0
- [root@server0 ~]# p=5
- [root@server0 ~]# [ -z $p ]
- [root@server0 ~]# echo $?
- 1
1. 一行打多条命令
a && b 仅当 a 成功时, 才执行 b
a || b 仅当 a 失败时, 才执行 b
a ; b 执行 a, 执行 b
示例:
创建用户登陆超过两个邮件报警
- #!/bin/bash
- num=`who | wc -l`
- [ $num -gt 2 ] && mail -s error root < /root/mail
编辑邮件内容 vim /root/mail
2. 判断文件 / 目录的状态
-e 判断对象是否存在, 存在即为真
-d 判断对象是否为目录, 存在即为真
-f 判断对象是否为文件, 存在即为真
-r 读
-w 写
-o 执行本
注: root 对所有对象皆为真脚本除外
[Moring 晨光]#chmod -x who.sh
[Moring 晨光]#ll who.sh
-rw-r--r--. 1 root root 81 4 月 24 11:52 who.sh
[Moring 晨光]#[ -o who.sh ]
[Moring 晨光]#echo $?
1
[判断] && 命令 存在即执行命令
[判断] || 命令 不存在即执行命令
! 取反
单分支 if 只能判断对
双分支 if 判断对和错
多分支 if 多次判断
来源: http://www.bubuko.com/infodetail-2577759.html