目录
shell 语法概述
echo
相当于cout,print
shell脚本 概念
-
shell 脚本并不是真正的编程语言,因为 SHELL脚本 在 Linux 的 shell 中运行
-
实际上 shell 脚本就是 命令的集合,类比于 windows 的批处理命令
比如要实现下述操作:
- 进入 /tmp 目录
- 列出当前目录下的文件
- 把所有文件复制到
/root
下 - 删除当前目录下的文件
完成上述操作,需要执行4个命令,要按4次回车。如果要求你每天都做重复的操作,就会显得很麻烦
因此我们可以将上述4步操作集成到一个shell脚本中,一次完成
shell 脚本使用基础
脚本存放目录
- shell脚本 是提高服务器管理维护的工具
- 通常优秀的管理员会将自己编写的脚本放在一个固定的目录,便于维护
- 简单上手一下:
cd/usr/local/sbin
// 假定这个目录是我们放置shell的目录vim first.sh
在 vim 中,使用root用户输入下面内容并保存
chmod +x first.sh
:给脚本赋予执行权限,脚本因为是可执行文件,必须要有执行权限./first.sh
:执行脚本
脚本完成了两件事,1:显示时间;2:显示 ”Hello World!“
shell 脚本使用变量
1. 使用变量
编写下面脚本vim ./variable.sh
:
有两处错误,更正后如下:
运行结果如下:
2. 数学运算
- 注意数学计算要用中括号
[ ]
括起来 - 数学运算前也要加
$
3. 用户交互输入
用户输入x,y,计算x+y并输出:
shell 脚本使用判断
1. 脚本选项使用
编写脚本 option.sh
运行如下:
其中,$1
, $2
为跟在脚本后的第一个、第二个选项;$0
代表脚本自身的名字
判断表达式
1. shell中的逻辑判断
- shell中使用
if
进行逻辑判断
注意[ ]
前后有空格,不能少
- 逻辑表达式用
[ ]
,且前后有空格,不能少
变量,a,b均为整数 | 含义 |
---|---|
a -eq b | return a == b |
a -ne b | return a != b |
a -gt b | return a > b |
a -lt b | return a < b |
a -ge b | return a >= b |
a -le b | return a <= b |
对上述逻辑改进,
&&
表示且;||
表示或elif
:表示 else if
2. 字符串判断
变量,s1,s2均为 字符串 | 含义 |
---|---|
-z s1 | return s1.empty() |
-n s1 | return !s1.empty() |
s1==s2 | return s1==s2 |
s1!=s2 | return s1!=s2 |
3. 文本判断
2. 字符串判断
变量,file为文本 | 含义 |
---|---|
-a file | 是否存在该文件,等同于-e |
-b file | 文件类型是否为专用设备 |
-c file | 文件类型是否为 签字字符 |
-d file | 文件类型是否为文件夹 |
-f file | 文件类型是否为普通文件 |
-O file 大写字母
O
O
O | 文件是否拥有当前文件 |
-r -w -x | 文件是否 可读、可写、可执行 |
-s | 文件是否存在,是否大于0字节 |
case 逻辑判断
-
为什么要增加一个case逻辑判断了,if 不够用吗?
答:if 逻辑判断用于条件比较少,比较清晰的情况 -
当逻辑判断条件比较多的时候,我们使用
case
逻辑
case 语法如下:
case $var in
value1)
command1
;;
value2)
command2
;;
*)
command3
;;
esac
例如:case常用于服务管理,如/etc/init.d/network
#! /bin/bash
read -p "input a number:" Num
case $Num in
1) echo 'You select 1'
;;
2) echo 'ou select 2'
;;
3) echo 'You select 3'
;;
4|5) echo 'ou select 4 or 5'
;;
*) echo 'default'
;;
easc
for 循环、while循环、until循环
for 循环
语法如下
for 变量名 in 循环条件;do
command
done
代码如下:
#!/bin/bash
for i in `seq 1 5`;do
echo $i
done
注释:反引号seq 1 5反引号
表示 1 2 3 4 5 五个数,这里是反引号,表示系统命令
关于系统命令,我们也可以这样调用
while循环
语法如下
while 条件;do
command
done
代码如下
until循环
语法与while类似,不过until是退出条件,如下
until 条件;do
command
done
shell 中的函数
在实际 shell 使用过程中,我们经常会重复调用同样功能的代码,这段代码可以写成一个函数
break 中断、continue中断、exit中断
-
break
-
continue
-
exit
exit命令,直接退出整个shell脚本。