Shell脚本编程学习
shell脚本概述
shell 脚本并不是真正的编程语言,shell脚本是在linux的shell中运行,实际上shell脚本就是命令的集合,类似于windows的批处理命令,我们将需要做的操作写入一个shell脚本中,可以定时执行,一次执行多个命令,shell脚本是提高服务器管理维护的工具。
编写shell脚本
快速开始
下面实现一个脚本,输入日期和”Hello World!”:
cd /usr/local/sbin
进入一个放shell脚本的目录vim first.sh
打开一个要编写的shell文件,后缀是.sh
- 输入shell脚本,并保存
1
2date
echo "Hello World!" chomd +x first.sh
给脚本赋予执行权限./first.sh
执行脚本
shell脚本使用变量
编写下列脚本
1 | d=`date +%H:%M:%S` |
date +%H:%M:%S
是一整个命令,使用反引号
包围起来
echo 回显时,如果有变量,需要使用双引号包围起来,变量前面加$
符号
注意设置变量时不要有多余的空格
这里 d 和 d1 两个变量,保存了执行命令时的时间,所以需要两个分别来记录
数学运算
编写下列脚本
1 | a=1 |
注意数学计算要用中括号
[]
括起来,并且前面加$
符号
用户输入交互
编写下列脚本,用户输入x和y,计算x+y并输出
1 | read -p "please input a number x:" x |
脚本选项使用
编写脚本 option.sh
1 | sum=$[$1+$2] |
赋予执行权限后,使用命令 ./option.sh 88 99
进行执行,输出88+99的值
这里 $1
和 $2
分别代表跟在脚本后的第一个和第二个选项, $0
代表脚本自身的名字
脚本使用判断
下面脚本判断输入是否大于60
1 | read -p "please input your score:" a |
注意:逻辑表达式用
[]
括起来,注意[]
前后的空格
两个整数之间的比较

字符串判断

文件判断

判断表达式
除了上面的if之外,还可以使用 else
, elif
如下:
1 | read -p "please input your score:" a |
case逻辑判断
1 | read -p "input a number:" Num |
*
代表其他所有情况
for 循环
1 | for i in `seq 1 5`;do |
seq 1 5
表示 1 2 3 4 5 五个数,这是系统命令, 反引号中写的是系统命令
我们甚至可以写ls
这个就会输入当前文件夹的所有文件
while循环
1 | a=5 |
until循环
1 | a=5 |
until循环语法和while循环一样,区别在于 until 循环 满足添加会终止,while循环 不满足条件时终止
使用函数
1 | function sumaa() |
注意,函数一定要写在脚本的最前面
shell中的中断
break终中断
1 | for i in `seq 1 5` |
continue 中断
1 | for i in `seq 1 5` |
continue 和 break 都是用于循环中,不同的是 break直接退出循环,continue 是跳过本次循环,进入下一次
exit
1 | for i in `seq 1 5` |
exit命令是直接退出整个shell脚本
shell小练习
计算 1~100的和
1
2
3
4
5sum=0
for i in `seq 1 100`;do
sum=$[$sum+$i]
done
echo $sum输入数字n,计算1+n,如果n<1 重新输入
1
2
3
4
5
6
7
8
9
10n=0
sum=0
while [ $n -lt 1 ];do
read -p 'input n:' n
done
for i in `seq 1 $n`;do
sum=$[$sum+$i]
done
echo $sum编写shell脚本,将/root目录下所有目录复制到 /tem目录
1
2
3
4
5
6cd /root
for f in `ls`;do
if [ -d $f ];then
cp -r $f /tmp/
fi
done
最后的练习
编写脚本实现下面功能
运行脚本提示,请输入你喜欢的操作系统(Windows 、Mac、Linux)
在用户输入windows后,提示一句话
在用户输入mac后,提示另一句话
在用户输入linux后,提示“真是伟大的选择”
直到用户输入linux后,脚本才运行结束,否则一直循环脚本。
1 | read -p "input your opratiing system: " x |