shell编程基础知识
目录
Shell是什么
Shell的变量
shell变量的定义
设置环境变量
位置参数变量
预定义变量
运算符
条件判断
流程控制
case语句
for循环
while循环
read读取控制台输入
函数
自定义函数
Shell是什么
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
- 脚本格式要求
- 脚本以#!/bin/bash开头
- 脚本需要有可执行权限
- 编写第一个Shell脚本
需求说明:创建一个Shell脚本,输出hello world!
- 脚本的常用执行方式
- 方式1(输入脚本的绝对路径或相对路径)
说明:首先要赋予helloworld.sh脚本的+x 权限,再执行脚本
2.方式2(sh+脚本)
说明:不用赋予脚本+ x权限,直接执行即可
Shell的变量
- Linux Shell中的变量分为,系统变量和用户自定义变量
- 系统变量:$HOME,$PWD,$SHELL,$USER等等,比如:echo $HOME 等等
- 显示当前shell中的所有变量:set
- shell变量的定义
- 定义变量:变量=值
- 撤销变量:unset 变量
- 声明静态变量:readonly变量,注意:不能unset
案例:
- 定义变量A
- 撤销变量A
- 声明静态的变量B=2,不能unset
- 可把变量提升为全局环境变量,可供其他shell程序使用[该案例后面讲}
shell变量的定义
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,5A=200(x)
- 等号两侧不能有空格
- 变量名称一般习惯为大写
- 将命令的返回值赋给变量
- A="date"反引号,运行里面的命令,并把结果返回给变量A
- A=$(date)等价于反引号
设置环境变量
基本语法
- export 变量名=变量值 (功能描述:将shell变量输出为环境变量)
- source 配置文件 (功能描述:让修改后的配置信息立即生效)
- echo $变量名 (功能描述:查询环境变量的值)
快速入门
- 在/etc/profile文件中定义TOMCAT_HOME环境变量
- 查看环境变量TOMCAT_HOME的值
- 在另外一个shell程序中使用 TOMCAT_HOME
注意:在输出TOMCAT_HOME 环境变量前,需要让其生效source /etc/profile
- shell脚本的多行注释
:<<!
内容
!
位置参数变量
介绍
当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
比如: ./myshell.sh 100 200,这个就是一个执行shell的命令行,可以在myshell 脚本中获取到参数信息
基本语法
$n (功能描述:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10})
$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看出一个整体)
$@ (功能描述:这个变量也代表命令行中的所有参数,不过$@把每个参数区分对待)
$# (功能描述:这个变量代表命令行中所有参数的个数)
位置参数变量
案例:编写一个shell脚本 position.sh,在脚本中获取到命令行的各个参数信息
预定义变量
基本介绍
就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用
基本语法
$$ (功能描述:当前进程的进程号(PID))
$! (功能描述:后台运行的最后一个进程的进程号(PID))
$? (功能描述:最后一次执行的命令的返回状态,如果这个变量的值为0,证明上一个命令正确执行;
如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了.)
应用案例
在一个shell脚本中简单使用一下预定义变量
preVar.sh
运算符
基本介绍
学习如何在shell中进行各种运算操作
基本语法
1. "$((运算式))" 或 "$[运算式]" 或者 expr m+n//expression表达式
2.注意expr运算时间要有空格,如果希望将 expr 的结果覆给某个变量,使用``
3.expr m-n
4.expr \*,/,% 乘 ,除,取余
应用实例
案例1:计算(2+3)x4的值
案例2:请求出命令行的两个参数[整数]的和
条件判断
判断语句
基本语法
[condition] (注意condition前后要有空格)
#非空返回true,可使用$?验证(0为true,>1为false)
应用实例
[hspEdu] 返回true
[ ] 返回fasle
[ condition ] && echo OK || echo notok 条件满足,执行后面的语句
- 判断语句
常用判断条件
(1) = 字符串的比较
(2) 两个整数的比较
-lt 小于
-le 小于等于 li
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
(3)按照文件权限进行判断
-r 有读的权限
-w 有写的权限
-x 有执行的权限
(4)按照文件类型进行判断
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并是一个目录
(4) 应用实例
案例1:"ok"是否等于"ok
判断语句:
案例2: 23是否大于等于22
判断语句:
案例3:/root/shcode/aaa.txt 目录中的文件是否存在
判断语句:
流程控制
if 判断
if [ 条件判断式 ]
then
代码
fi
或者,多分支
if [ 条件判断式 ]
then
代码
elif [ 条件判断式 ]
then
代码
fi
注意事项 : [ 条件判断式 ],中括号和条件判断式之间必须有空格
应用实例
请编写一个shell程序,如果输入的参数,大于等于60,则输出"及格了",如果小于60,则输出"不及格"
case语句
基本语法
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程度2
;;
...省略其他分支...
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
应用实例
当命令行参数是1时,输出"周一",是2时,就输出"周二",其他情况输出"other"
for循环
基本语法
for 变量 in 值1 值2 值3...
do
程序
done
应用实例
案例1:打印命令行输入参数[这里可以看出 $* 和 $@ 的区别]
注意:$* 是把输入的参数当做一个整体
注意:"$@"有几个参数输出几句
基本语法2
for (( 初始值;循环控制条件;变量变化))
do
程序
done
应用实例
案例1:从1加到100的值输出显示
把100变成变量,从1加到n
while循环
基本语法
while [ 条件判断式 ]
do
程序
done
应用实例
案例1:从命令行输入一个数n,统计从1+...+n 的值是多少?
注意一下,while 和[]要有空格,$i和左边的 [ 也得有空格
read读取控制台输入
基本语法
read(选项)(参数)
选项:
-p:指定读取值时的提示符;
-t:指定读取值时的等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。。
参数
变量:指定读取值的变量名
应用实例
案例1:读取控制台输入一个num值
案例2:读取控制台输入一个num值,在10秒内输入
(案例2超过10秒的情况)
函数
函数介绍
shell编程和其他编程语言一样,有系统函数,也可以自定义函数。系统函数中,我们这里介绍两个。
- 系统函数
basename基本语法
功能:返回完整路径最后/的部分,常用于获取文件名
basename[pathname][suffix]
basename [string][suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个( '/' )字符,然后将字符串显示出来。
选项:
suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。
应用实例
案例1:请返回/home/aaa/test.txt 的"test.txt"部分
dirname基本语法
功能:返回完整路径最后/的前面的部分,常用于返回路径部分
dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))
应用实例
案例1:请返回 /home/aaa/test.txt 的/home/aaa
自定义函数
基本语法
[ function ] funname [()]
{
Action;
[return int;]
}
调用直接写函数名:funname [值]
应用实例
案例1:计算输入两个参数的和(动态的获取),getSum
以上是今天的视频笔记,如有侵权请联系我删除。
学习如逆水行舟,不进则退。一起加油!
shell编程基础知识相关推荐
- Linux网络编程基础知识
Linux网络编程基础知识 1. 协议的概念 1.1 什么是协议 1.2 典型协议 2 网络应用程序设计模式 2.1 C/S模式 2.2 B/S模式 2.3 优缺点 3 分层模型 3.1 OSI七层模 ...
- Linux 操作系统编程基础知识
Linux操作系统 1.Linux 操作系统编程基础知识 1.3 系统调用和库函数 1.3.1 接口 命令接口:以命令形式呈现在用户面前,方便用户直接或间接控制自己的作业. 程序接口:为应用程序使用系 ...
- 什么是Shell?Shell脚本基础知识详细介绍
这篇文章主要介绍了什么是Shell?Shell脚本基础知识介绍,本文是一篇Shell脚本入门文章,在本文你可学到什么是Shell.有多少种Shell.一个Shell脚本代码实例,需要的朋友可以参考下 ...
- Java 网络编程基础知识
Java 网络编程基础知识 基础概念 计算机网络的基本概念 网络:多台计算机使用网络设备互联在一起,计算机之间可以进行通信,这样就组成了一个计算机网络. 网络设备:集线器(HUB),路由器,交 ...
- Linux Shell编程基础
linux系统下给命令指定别名alias命令用法: 在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名.虽然可以为命令建立"链接"解决长文件名的问题,但 ...
- 16第一章 ASP.Net编程基础知识
第一章 ASP.Net编程基础知识 第一章 ASP.Net编程基础知识 本章首先介绍用ASP.Net技术编制服务器端动态网页所需的网络和HTML标记语言方面的有关知识.然后 ...
- 【⛔拒绝内卷,学会shell,走遍天下都不怕⛔】shell编程基础
shell编程基础 shell简介 属性 shell是一个命令行解释器,建立了用户和操作系统之间的接口.当我们在命令行输入一个命令后,shell会对命令进行解释,调用相应的程序去执行.shell是一种 ...
- Linux——Linux C语言编程基础知识
源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 通常在gcc后跟一些选项和文件名来使用gcc编译器.gcc 命令的基本用法如下:: gcc [option ...
- python编程基础知识点_12个关于Python编程基础知识的总结
学习任何语言的时候,打好基础非常重要.就像学英文,要知道26个字母,还要学会单词.句型.语法等等.那么Python编程也一样,对于刚入门学习的人更应该打好基础.下面课课家收集了常用的12种Python ...
最新文章
- 每天一个JavaScript实例-获取元素当前高度
- boost::hana::monadic_compose用法的测试程序
- 干货|各种WAF绕过手法学习
- 亿些模板【字符串+其他】
- RTP Payload Format for H.264 Video
- CF Edu54 E. Vasya and a Tree DFS+树状数组
- 【Android源码】Activity如何加载布局
- 深入理解对象的数据属性与访问器属性及属性间相互转换
- java中的jackson_Java中的JSON数据绑定框架Jackson使用介绍
- C# datagridview 实现按指定某列或多列进行排序
- python选取tensor某一维_python基础教程详解torch.Tensor的4种乘法
- 编程中的c语言32个英文代码,C语言图形编程代码(国外英文资料).doc
- 全面了解浏览器(内核)发展史
- 【Python】Pandas DataFrame 一维表二维表的转换
- bitset——定义及常用操作。
- 微博图片设计模板素材推荐 精品 小众
- 新零售saas小程序如何探索数字化门店的破局之路?
- 企业如何正确选择云服务商
- linux网络凭据,适用于Linux和Windows的服务器凭据管理
- 基于Python的DICOM文件转换教程,使用pydicom将图片存为DICOM文件。