Linux开发_Shell脚本编程语言

【摘要】 介绍linux下shell编程,介绍shell里语句、变量、函数、运算符的使用。
任务1:shell脚本语言 linux下常用的脚本语言。
变量、数组、for、while、函数、运算符、if、……..
[root@wbyq /]# ls /bin/sh -l
lrwxrwxrwx. 1 root root 4 12月 27 2016 /bin/sh -> bash
​ 变量定义使用
#!/bin/bash
abc=12345
echo abc=$abc
echo abc=${abc}
​ shell脚本传递参数 类似于c语言的argv argc
#!/bin/bash
echo cnt=$#
echo [0]=$0
echo [1]=$1
echo [2]=$2
echo [3]=$3
​ if语句语法规则
#!/bin/bash
a=10
b=20
if [ ${a} -eq ${b} ] #判断两个数是否相等,也可以使用 ==
then
echo 123
else
echo 456
fi
#!/bin/bash
if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ]
then
echo 条件为真
else
echo 条件为假
fi
#一个[]表示一个完整的表达式
#-a表示与 -o表示或 只能用于单个表达式之内
#多个表达式之间可以使用&&和 || 嵌套连接
#!/bin/bash
#嵌套if语句示例
if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ]
then
if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ]
then
echo 条件为真
else
echo 条件为假
fi
else
if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ]
then
echo 条件为真
else
echo 条件为假
fi
fi
​ 计算字符串长度
#!/bin/bash
string=abcd
echo ${#string} #输出 4
​ 数组语法
#!/bin/bash
buff=(1 2 3 4 5 6 7 8 9)
buff[0]=88
buff[1]=99
buff[100]=100
buff[88]=55
echo buff[0]=${buff[0]}
echo buff[1]=${buff[1]}
echo buff[2]=${buff[2]}
echo buff[100]=${buff[100]}
​ echo用法示例
#!/bin/bash
data=12345
echo data=${data}
​ printf语句格式
#!/bin/bash
printf %d\n 1234
printf %s\n 45678
​ 从键盘上读取数据
#!/bin/bash
echo -n 输入数据: #参数-n 的作用是不换行, echo 默认是换行
read data #从键盘输入
echo 你输入的数据为: $data #显示信息
​ case多分支选择语句
#!/bin/bash
echo 输入一个 1 到 4 之间的数字
read anum
case ${anum} in
1) echo 你选择 1
;;
2) echo 你选择 2
;;
3) echo 你选择 3
;;
4) echo 你选择 4
;;
5) echo 你选择 4
;;
*) echo 你不选择一个数字不在 1 到 4 之间
;;
esac
​ for循环
(1)基本用法
#!/bin/bash
for loop in 1 2 3 4 5 6 7 8 9
do
echo loop=${loop}
done
(2) 嵌套示例
#!/bin/bash
for loop in 1 2 3
do
for loop in 1 2 3
do
echo loop=${loop}
done
done
(3)输出位置路径
#!/bin/bash
for loop in /test/*.sh
do
echo file_name=${loop}
done
​ break关键字
#!/bin/bash
for loop in 1 2 3
do
for loop in 1 2 3
do
echo loop=${loop}
break 2 #break后面可以加参数,选择跳出的循环层次
done
done
​ while循环示例
(1)示例1
#!/bin/bash
while : #无限循环条件
do
sleep 1 #休眠1秒钟
echo 123
break 1 #跳出指定层次的循环
done
(2)示例2
#!/bin/bash
counter=0
while [ ${counter} -lt 5 ]
do
counter=`expr ${counter} + 1`
echo counter=${counter}
done
counter=0
while [ ${counter} != 5 ]
do
counter=`expr ${counter} + 1`
echo counter=${counter}
done
(2)示例3
#!/bin/bash
while read data
do
echo data=${data}
done
(3)示例4
#!/bin/bash
while read data
do
echo data=${data}
continue #跳出当前这一次循环
echo 1234556
done
​ 函数
(1)​ 基本示例
#!/bin/bash
#函数的编写格式
func()
{
echo 函数调用调用成功!
}
func #调用函数不需要加()
(2)​ 嵌套调用
#!/bin/bash
#函数的编写格式
func1()
{
func2
}
func2()
{
echo 函数调用调用成功!
}
func1 #调用函数不需要加()
(3)​ 函数的返回值
#!/bin/bash
#函数的编写格式
func()
{
return 255 #最大范围是255
}
func #调用函数不需要加
echo $?
(4)​ 函数的形参
#!/bin/bash
#函数的编写格式
func()
{
echo $1
echo $2
echo $3
echo $4
return 255 #函数返回值只能是整数,最好不要返回路径。
}
func 123 456 789 dfvbfdjvbgdf
echo $?
​ 调用外部脚本
#!/bin/bash
. 123.sh
source 123.sh
echo a=${a}
echo b=${b}
echo c=${c}
​ shell脚本练习
1.​ 从键盘上输入年份,判断平年闰年。
#!/bin/bashecho -n 请输入年份: # -n 不换行read year #从键盘上读取年份#能被400整除 ,能被4整除不能被100整除if [ `expr $year % 400` == 0 ] || [ `expr $year % 4` == 0 -a `expr $year % 100` != 0 ]then echo $year是闰年else echo $year是平年fi 2.​ 输出9*9乘法口诀表。
3.​ 冒泡排序。
4.​ 使用函数封装判断平年闰年
5.​ 输出所有水仙花数(个位+十位+百位的立方和=本身)例如: 1*1*1+2*2*2+3*3*3=123
6.​ 判断100~200之间所有的素数
7. 写一个脚本
(1). 切换工作目录至指定目录
(2). 依次向指定目录中的每个文件或子目录问好,形如:
(提示:for file in /var/*;或for file in `ls /var`;)
hello,log
(3).统计/var目录下共有多个文件,并显示出来
8. 写一个脚本, 通过ping命令测试192.168.x.0到192.168.x.254之间的所有主机是否在线
如果在线,就显示“在线”
如果不在线,就显示“离线”
注意:ping -c1 -w1 中-c1是指ping的次数,-w是指执行的最后期限,也就是执行的时间,单位为秒
9. 模拟linnux登录shell
就是输入用户名密码判断是否正确。
10. 查找指定目录下最大的文件,然后输出
11. 将指定目录下的所有指定后缀文件,按照统一的方式命名。

手机投屏到电视的5种方法
S7-1500有关组态控制的重要信息简析
开关电源之非同步控制器的仿真
乐檬K12系列即将上市:配备6000mAh超大电池
中低压配电网自动化及PLC实现设计
Linux开发_Shell脚本编程语言
中国第一!浪潮信息存储装机容量连续9个季度折桂
人工智能助力下 智慧林业迎来了良好的发展时机
基于Sitara AM5749平台的ali-iot边缘网关的配置方法
适用于FPC行业的字符喷印机PY300D-F
边缘计算在物联网领域的应用及发展前景
如何减少无铅阵列封装中的空洞?
晶圆代工业者在2019年第一季就面临着相当严峻的挑战
PPG信号采集系统设计方案
NASA SLS首飞箭芯级将开展一系列关键测试
食品包装薄膜表面检测仪的原理及功能
数字货币比特币正在创造“新世界货币”不只是新货币这么简单
电路消除继电器触点反弹
量子计算研究人才或成下一个大缺口
基于1553B总线和ARINC429总线的数据格式介绍