Shell编程入门

1 认识Shell

Shell,Kernal和Hardware三者的关系如图1所示。在Linux OS中,默认Shell是Bash。通过命令行#echo $SHELL可以查看当前的Shell类型,# vim /etc/shells 可以查看OS支持的Shell类型。

Shell,Kernal和Hardware三者的关系图

2 创建第1个Shell脚本

2.1创建脚本

root@ubuntu:~# vim hellowrold.sh  

2.2编辑内容,保存即可

#!/bin/bash     
echo "Hello World !"  #输出Hello World !

2.3脚本执行方式

#方法1:赋予执行权限,直接运行
root@ubuntu:~# .chmod 755 hello.sh
root@ubuntu:~# ./helloworld.sh

#方法2:通过Bash调用执行脚本
root@ubuntu:~#bash hello.sh

3 变量

3.1 命名

变量名=变量,如

name=dudu

注意:中间不要有空格

3.2 变量的使用

echo ${name}
echo $name

注意:加{}只是为了识别变量名的边界

3.3 三种易混淆引号(单引号,双引号和反引号)的区别

var1=haha

#输出变量值
echo "$var1"

#字符原样输出,单引号中的变量是无效的
echo '$var1'

#用于执行shell命令
echo `date`  

4 字符串和数组

4.1字符串常用方法

s1="helloworld"
s2="hellobaby"

#判断字符是否相等
if [ $s1 = $s2 ]
then
  echo "字符串$s1与字符串$s2相等"
fi

#判断字符是否不相等
if [ $s1 != $s2 ]
then
   echo "字符串$s1与字符串$s2不相等"
fi

#查看字符串长度
expr length "$s1"

#截取
expr substr "$s1" 1 5

#查找首个匹配的字符串的位置
expr index "$s1" h
#查找首个匹配的字符串的位置注意:expr命令第一个字符的索引值为 1

4.2 数组的操作

my_array=("dudu" "dudumama")

#获取第n个元素
echo ${my_array[0]}

#获取所有元素
echo ${my_array[@]}

#获取数组长度
echo ${#my_array[@]}

5 运算符

5.1 算数运算符

n1=11
n2=2
#加法
echo "$n1 + $n2 =" `expr $n1 + $n2`

#减法
echo "$n1 - $n2 =" `expr $n1 - $n2`

#乘法
echo "$n1 x $n2 =" `expr $n1 \* $n2`

#除法
echo "$n1 / $n2 =" `expr $n1 / $n2`

#取余
echo "$n1 % $n2 =" `expr $n1 % $n2`

#判断两个数是否相等
if [ $n1 == $n2 ]
then
  echo "n1 等于 n2"
fi

#判断两个数是否不相等
if [ $n1 != $n2 ]
then
  echo "n1 等于 n2"
fi

5.2 关系运算符

#判断两个数是否相等
if [ $n1 == $n2 ]
then
  echo "n1 等于 n2"
fi

#判断两个数是否不相等
if [ $n1 != $n2 ]
then
  echo "n1 等于 n2"
fi

#判断大小
if [ $n1 -gt $n2 ]
then
  echo "$n1 大于 $n2"
fi

if [ $n1 -lt $n2 ]
then
  echo "$n1 小于 $n2"
fi

5.3 逻辑运算符

#或
if [[ $n1 -gt $n2 ||  $n1 == $n2 ]]
then
  echo "(($n1 > $n2) || ($n1 == $n2)) = true"
fi

#非
if [[ $n1 -gt $n2 && $n1 == $n2 ]]
then
  echo "(($n1 > $n2) && ($n1 == $n2)) = true"
fi

6 流程控制

6.1 for循环

for((i=1;1<=10;i++));
do
echo $i;
done

6.2 while循环

i=1
while(($i<=10))
do
echo $i
i= `expr $i + 1`
done

6.3 if语句

n1=3
n2=6

if [ $n1 -gt $n2 ]
then
  echo "$n1大于$n2"
else
  echo "$n1小于$n2"
fi

7 函数

7.1 没返回值

add(){
  echo `expr 1 + 1 `
}
add

7.2 有返回值

add2(){
  echo "请输入第一个数字:"
  read n1
  echo "请输入第二个数字:"
  read n2
  return `expr $n1 + $n2`
}

add2

echo "函数add2的返回值是$?"

8 输入/输出重定向

8.1命令 > 文件

将命令结果覆盖原文件内容

root@ubuntu18:~/shell_workspace# echo hello > file
root@ubuntu18:~/shell_workspace# cat file
hello
root@ubuntu18:~/shell_workspace# echo hello > file
root@ubuntu18:~/shell_workspace# cat file
hello

8.2 命令 >> 文件

将命令结果追加原文件内容后面

root@ubuntu18:~/shell_workspace# cat file
hello
root@ubuntu18:~/shell_workspace# echo hello >> file
root@ubuntu18:~/shell_workspace# cat file
hello
hello

8.3 命令 > /dev/null 2>&1

/dev/null是linux上一个特殊文件,可以看成一个黑洞,写入的数据就被丢掉,也无法从中读取数据。2>&1是指标准输出(stdout)和标准错误输出(sterr)
简而言之就是不输出任何结果信息。在实际应用中,比如某个进程的日志是没用的,我们就可以使用此法,将该进程的日志丢弃。

root@ubuntu18:~/shell_workspace# cat file > /dev/null 2>&1
root@ubuntu18:~/shell_workspace#

9 参考文献

[1] linux从入门到精通 第2版. 2014, 清华大学出版社.
[2] 菜鸟教程 https://www.runoob.com/linux/linux-shell.html.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
大学生在线租房平台管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、报修评价管理、字典管理、房东管理、房屋管理、房屋收藏管理、房屋留言管理、房屋租赁管理、租房论坛管理、公告信息管理、留言板管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生在线租房平台管理系统可以提高大学生在线租房平台信息管理问题的解决效率,优化大学生在线租房平台信息处理流程,保证大学生在线租房平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理大学生在线租房平台信息,包括房屋管理,培训管理,报修管理,薪资管理等,可以管理公告。 房屋管理界面,管理员在房屋管理界面中可以对界面中显示,可以对房屋信息的房屋状态进行查看,可以添加新的房屋信息等。报修管理界面,管理员在报修管理界面中查看报修种类信息,报修描述信息,新增报修信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
基于hal库的OLED显示屏驱动C语言实现源码.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值