shell是什么


shell 是一个命令行接收器,它为Linux用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动,挂起,停止甚至是编写一些程序。

shell 变成快速入门 - shell 脚本的执行方式

脚本格式要求

  1. shell 脚本以 #!/bin/bash 开头
  2. 脚本需要有可执行权限

编写第一个shell脚本

  • 需求说明

    创建一个Shell脚本,输出 hello world!

脚本的执行方式

方式1(输入脚本的绝对路径和相对路径)

  1. 首先要给赋予脚本一个可执行权限
  2. 执行脚本

方式2(sh + 脚本,不推荐)
1. 不用赋予脚本权限,直接执行即可

shell 变量

shell 变量介绍

  1. Linux Shell 中的变量分为,系统变量用户自定义变量
  2. 系统变量:$HOME,$PWD,$USER 等等

    如:输出系统变量 echo $HOME

    输出结果:

  3. 显示当前Linux中所有的变量:set

shell 变量的定义

  • 基本语法
    1)定义变量:变量名=值
    2)撤销变量:unset 变量
    3)声明静态变量:readonly 变量=值,注意静态变量不能 unset

  • 案例入门
    1)案例1:定义变量A
    2)案例2:撤销变量A


    3)案例3:声明静态变量 B=2,不能unset

    运行结果:报错不能撤销B,因为B是静态变量

定义变量的规则

  1. 变量名可以右字母,数字和 下划线组成,但是不能以数字开头
  2. 等号的两侧不能有空格
  3. 变量名一般习惯大写

将Linux命令的返回值赋值给变量

基本语法:

  1. A=`Linux命令`
    如:A=` ls -al `(使用反引号括起来) 把 ls -al 执行的结果赋值给变量A
  2. A=$(命令)
    如:A=$(ls -al) 等价用于第一个,推荐使用


输出结果:

环境变量

基本语法

  1. export 变量名=变量值(功能描述:将shell 变量输出为环境变量)
  2. source 配置文件(功能描述:让修改后的配置信息立即生效)
  3. echo $变量名 (功能描述:查询环境变量的值)


使配置生效,并输出:

位置参数变量

介绍

基本语法

应用实例

案例:编写一个shell脚本 positionPara.sh,在脚本中获取到命令行参数信息

输出结果:

预定义环境变量($$$!$?

基本介绍

预定义环境变量就是shell 设计者事先已经定义好的变量,可以直接在shell中使用

基本语法

应用实例

在一个 shell 脚本中简单使用一下预定义变量

输出结果:

运算符

基本语法

  1. $((运算式)) 或者 $[运算式]

  2. expr m + n
    注意:expr 运算符间要有空格

  3. expr m - n

  4. expr *,/,% (乘,除,取模)

案例:

  • 案例1:计算(2+3)*4的值
    $((运算符))


    $[(2+3)*4] (推荐这种方式)

  • 案例2:请求出命令行两个参数的和

条件判断

基本语法

[ condition ] (注意 condition前后要有空格

常用的判断条件

  1. 两个整数的判断

  2. 按文件的权限进行判断

  3. 按文件的类型进行判断

应用案例

  1. 判断“ok” 是否等于ok

  2. 判断23是否大于等于22

  3. 判断 /root/install.log 文件是否存在

  4. 判断是否有对/root/install.log 文件是否有写的权限

流程控制

基本语法

第一种:
if [ 条件判断式 ];then
程序
fi

第二种:
if [ 条件判断式 ]
then
程序
fi

第三种:
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
fi
注意事项:if [ 条件判断式 ]:中括号和if或者elif 和条件判断式之间必须有空格,推荐2,3种

应用案例

请编写一个 shell 程序,如果输入的参数大于等60,则输出“及格了”,如果小于60则输出“不及格”

case 语句

基本语法

case $变量名 in
“值1”)
程序…
;;
“值2”)
程序…
;;
… 其他分支省略…
*)
程序…
如果以上变量的值都不是则执行此程序
;;
esac

应用案例

当命令行参数 是1的时候输出“星期一”,是2时,就输出“星期 二”,其他情况就输出“other”

for 循环

基本语法1

for 变量i in 值1 值2 值3 …
do
程序
done

注意:该语法的意思是遍历 值1 值2 值3,把值1 值2 值3 分别赋值给变量i

  • 案例:打印命令行输入命令行参数
    注意区别$* 和 $@ 分别的意思

基本语法2

for (( 初始值;循环控制条件;变量变化 ))
do
程序
done

  • 案例:从1加到100的值输出显示

while 循环

基本语法

应用案例

从命令行输入一个数n,统计从 1+…+n的值是多少

read 读取控制台输入

基本语法:

read 选项 参数
选项:

参数:
变量:指定读取值的变量名

应用实例

  1. 读取控制台输入一个num值
  2. 读取控制台输入一个num值,等待10秒

函数

函数介绍

系统函数

basename

功能:返回完整路径最后 / 的部分,常用语获取文件名

basename [pathname] [suffix] (功能描述:显示文件名(不带目录))

选项:

案例1:请返回/home/aaa/test.txt 的“test.txt” 部分
案例2:请返回/home/aaa/test.txt 的“test” 部分

dirname

功能:返回完整路径最后 / 前面部分,常用与返回路径部分

dirname 文件的绝对路径 (功能描述:从给定的包含绝对路径的文件中返回文件的目录)

案例:请返回 /home/aaa/test.txt 的目录

自定义函数

基本语法:
function funname(){
程序…
[return 返回值]
}

调用直接写函数名,参数可选
funname [参数]

案例:计算两个输入参数的和

Linux shell编程语法相关推荐

  1. Linux Shell 编程语法

    编写代码 在计划好要程序干什么以及如何使用程序的使用变得更加简单易学之后,程序员就必须以计算机能够理解的方式把他的想法记录下来,告诉计算机他想干什么.这就是要用到的所谓的代码.一般按照如下顺序组织自己 ...

  2. Linux Shell 编程学习总结

    Shell 教程 Shell简介:什么是Shell,Shell命令的两种执行方式 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成 ...

  3. 【“计算机科学与技术”专业小白成长系列】Linux Shell 编程 极简教程

    Linux Shell 编程 极简教程 内容摘要 本文是 Linux Shell 编程简单入门.主要内容: Linux 简介 Shell 编程入门 Kotlin 脚本与 Shell 脚本 Linux ...

  4. 《Linux Shell编程从初学到精通(第2版)》pdf

    下载地址:网盘下载 内容简介 编辑 shell是用户与内核进行交互操作的一种接口,是linux最重要的软件之一.目前最流行的shell称为bash shell,bash shell脚本编程以其简洁.高 ...

  5. linux简单重定向代码,Linux Shell编程(26)——代码块重定向

    像 while, until, 和 for 循环代码块, 甚至 if/then 测试结构的代码块都能做到标准输入的重定向. 即使函数也可以使用这种重定向的格式 .所有的这些依靠代码块结尾的 < ...

  6. linux怎么退出shell编程,Linux Shell编程(11)——退出和退出状态

    exit命令一般用于结束一个脚本,就像C语言的exit一样.它也能返回一个值给父进程. 每一个命令都能返回一个退出状态(有时也看做返回状态).一个命令执行成功返回0,一个执行不成功的命令则返回一个非零 ...

  7. 「Linux」Linux Shell 编程基础入门

    Linux Shell 编程基础入门 1. 变量 1.1 变量定义 1.2 使用变量 1.3 引号 1.4 将命令的结果赋值给变量 1.5 位置参数 1.6 特殊变量及其含义 2. 字符串 2.1 字 ...

  8. linux .sh文件详解,干货讲解之Linux Shell编程

    原标题:干货讲解之Linux Shell编程 Shell 教程 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. She ...

  9. Linux shell编程学习

    Linux shell编程学习 shell是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入需要执行的命令.这点与Windows的命令提示符类似,但Linux shell的功能更加强 ...

最新文章

  1. 基于OpenCV的条形码区域分割
  2. 用osgEarth实现Cesium的后处理特效(1)
  3. Linux缓冲区溢出问题
  4. Photoshop 融合属性 Unity Shader
  5. BlogEngine .NET 日期控件显示问题
  6. linux安装nginx源码,CentOS7源码编译安装Nginx
  7. Gerrit代码审核服务器搭建全过程
  8. 程序员在想些什么?拒绝盲猜,CSDN帮你精准洞察 Ta 们的心
  9. java jdk myeclipse_java初体验(JDK+myeclipse)
  10. css hacks (ie6,ie7,ie8,firefox,Chrome)
  11. TensorFlow2 tf.keras和keras
  12. 【网站开发必备】——12款响应式 Lightbox(灯箱)效果插件
  13. php mysql安装配置_转载:PHP,MySQL的安装与配置
  14. mysql 索引 hash_Mysql中索引类型,B-tree、Hash索引怎么实现的以及其特点?
  15. IOS开发之----四舍五入问题
  16. POJ 3268 Silver Cow Party 单向最短路
  17. 路由与交换技术笔记(eNSP)
  18. STM32外设驱动总结(公司项目需要)
  19. 7.JUC 三大辅助类
  20. Learn Git Branching 学习笔记(关于origin和它的周边——Git远程仓库高级操作篇)

热门文章

  1. html网页漂浮广告原理js,js实现广告漂浮效果的小例子
  2. 浅谈Vue单页应用首屏加载速度优化方案
  3. 0xc0000005 系统应用日志_系统日志中显示,IE错误,代码 0xc0000005
  4. 柱面投影的C++实现(一)
  5. 自然语言处理数据集集锦(持续更新ing...)
  6. 冰封王座 地图与种族优势分析
  7. 通过AI为黑白照片着色。
  8. Android 10.0 设置充电到50%退出省电模式
  9. python导入siri_python-shortcuts:一个利用Python创建Siri快捷方式的库
  10. java读取modbus(串口,DTU(WIFI )也可 DTU(gprs)也可)协议数据 解释详细 踩坑完整 拿来就可以用的demo(下)