shell脚本语言

  • 1、shell的概述
  • 2、脚本的调用形式
    • 打开终端时系统自动调用:/etc/profile 或 ~/.bashrc
  • 3、shell语法初识
    • 3.1、定义以开头:#!/bin/bash
    • 3.2、单个"#"号代表注释当前行
      • 第一步:编写脚本文件
      • 第二步:加上可执行权限
      • 第三步:运行
        • 三种执行方式 (./xxx.sh bash xxx.sh . xxx.sh)
          • ./xxx.sh :先按照 文件中#!指定的解析器解析
          • bash xxx.sh:指明先用bash解析器解析
          • . xxx.sh 直接使用默认解析器解析(不会执行第一行的#!指定的解析器)但是第一行还是要写的
      • 注意:windows下 写脚本 在linux下执行 注意
  • 4、变量
    • 案例:
    • 案例:读取多个值
    • 案例只读变量:
    • 查看环境变量:env
      • 导出环境变量 作用:(让其他shell脚本识别该变量,设为全局变量)
    • 注意事项:
  • 5、预设变量
    • shell直接提供无需定义的变量
    • 案例:
    • 脚本标量的特殊用法
  • 6、变量的扩展
    • 6.1、判断变量是否存在
    • 6.2、字符串的操作
  • 7、条件测试
    • 7.1、文件测试
    • 7.2、字符串测试
    • 7.3、数值测试
    • 7.4、符合语句测试
  • 8、控制语句
    • 8.1、if控制语句
      • 案例:
      • 案例:判断当前路径下有没有文件夹 有就进入创建文件 没有 就创建文件夹 再进入创建文件
      • 案例:
    • 8.2、case
    • 8.3、for循环语句
      • 案例:
      • 案例:扫描当前文件
    • 8.4、while
    • 8.5、until
    • 8.6、break continue
  • 9、函数
    • 案例:求最值
    • 案例:函数分文件

1、shell的概述


shell 是一种脚本语言
脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)
shell 既是应用程序 又是一种脚本语言(应用程序 解析 脚本语言)
shell命令解析器:
系统提供 shell命令解析器: sh ash bash
查看自己linux系统的默认解析:echo $SHELL



shell脚本是一种脚本语言,我们只需使用任意文本编辑器,按照语法编写相应程序,增加可执行权限,即可在安装shell命令解释器的环境下执行

2、脚本的调用形式

打开终端时系统自动调用:/etc/profile 或 ~/.bashrc

/etc/profile
此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,系统的公共环境变量在这里设置
开机自启动的程序,一般也在这里设置
~/.bashrc
用户自己的家目录中的.bashrc
登录时会自动调用,打开任意终端时也会自动调用
这个文件一般设置与个人用户有关的环境变量,如交叉编译器的路径等等
用户手动调用:用户实现的脚本

3、shell语法初识

3.1、定义以开头:#!/bin/bash

#!用来声明脚本由什么shell解释,否则使用默认shell

3.2、单个"#"号代表注释当前行

第一步:编写脚本文件

第二步:加上可执行权限

chmod +x xxxx.sh

第三步:运行

三种执行方式 (./xxx.sh bash xxx.sh . xxx.sh)

三种执行方式的不同点(./xxx.sh bash xxx.sh . xxx.sh)

./xxx.sh :先按照 文件中#!指定的解析器解析

如果#!指定指定的解析器不存在 才会使用系统默认的解析器

bash xxx.sh:指明先用bash解析器解析

如果bash不存在 才会使用默认解析器

. xxx.sh 直接使用默认解析器解析(不会执行第一行的#!指定的解析器)但是第一行还是要写的

三种执行情况:
打开终端就会有以后个解释器,我们称为当前解释器
我们指定解析器的时候(使用 ./xxx.sh 或 bash xxx.sh)时会创建一个子shell解析 脚本

注意:windows下 写脚本 在linux下执行 注意


执行结果:

将windows文件 转换成 unix文件
方法一:dos2unix 如果没有该插件 需要安装
sudo apt-get install dos2unix
dos2unix shell脚本
转换成功就可以执行运行
方法二:
需要用vi打开脚本,在最后一行模式下执行
:set ff=unix

4、变量

定义变量
变量名=变量值
如:num=10
引用变量
$变量名
unset :清除变量值

运行结果:

从键盘获取值read


运行结果:

案例:

在一行上显示和添加提示 需要加上-p

运行结果:

案例:读取多个值


运行结果:

案例只读变量:


运行结果:

查看环境变量:env


导出环境变量 作用:(让其他shell脚本识别该变量,设为全局变量)

source 脚本文件
source命令用法:
source FileName
作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令“.”来替代。
如:source .bash_rc 与 . .bash_rc 是等效的。
注意:source命令与shell scripts的区别是,
source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。这样如果把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。

06_sh.sh

#!/bin/bash
expor DATA=250

用source 是文件生效

使用 env可以查看到环境变量中已经有 DATA

可以在终端直接中读取:

在其他sh脚本读取:

运行结果:

注意事项:

1、变量名只能包含英文字母下划线,不能以数字开头
1_num=10 错误
num_1=20 正确
2、等号两边不能直接接空格符,若变量中本身就包含了空格,则整个字符串都要用双引号、或单引号括起来
3、双引号 单引号的区别
双引号:可以解析变量的值
单引号:不能解析变量的值

运行结果:

如果想在PATH变量中 追加一个路径写法如下:(重要!!!!)

export PATH=$PATH:/需要添加的路径

5、预设变量

shell直接提供无需定义的变量

案例:


运行结果:

脚本标量的特殊用法




加-e转义 才起换行作用

()由子shell 完成

{}由当前的shell执行

6、变量的扩展

6.1、判断变量是否存在


6.2、字符串的操作

7、条件测试

test命令:用于测试字符串、文件状态和数字
test命令有两种格式:
test condition 或[ condition ]
使用方括号时,要注意在条件两边加上空格。

7.1、文件测试


7.2、字符串测试



7.3、数值测试



7.4、符合语句测试


8、控制语句

8.1、if控制语句

格式一:
if [条件1]; then执行第一段程序
else执行第二段程序
fi
格式二:
if [条件1]; then执行第一段程序
elif [条件2];then
执行第二段程序
else执行第三段程序
fi

案例:

案例:判断当前路径下有没有文件夹 有就进入创建文件 没有 就创建文件夹 再进入创建文件


运行结果:

案例:


运行结果:

8.2、case


8.3、for循环语句



案例:

案例:扫描当前文件

8.4、while


8.5、until


8.6、break continue

9、函数


所有函数在使用前必须定义,必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用

案例:求最值

案例:函数分文件


fun.sh

24_sh.sh

shell脚本语言(超全超详细)相关推荐

  1. linux命令行开头是sh,shell脚本语言的使用(超全超详细)

    1.shell的概述 shell 是一种脚本语言 脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译) shell 既是应用程序 又 ...

  2. linux中写脚本一般用语言,shell脚本语言的使用(超全超详细)

    1.shell的概述 shell 是一种脚本语言 脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译) shell 既是应用程序 又 ...

  3. 超全超详细的HTTP状态码大全

    超全超详细的HTTP状态码大全 本部分余下的内容会详细地介绍 HTTP 1.1中的状态码.这些状态码被分为五大类: 100-199 用于指定客户端应相应的某些动作. 200-299 用于表示请求成功. ...

  4. ensp启动设备蓝屏_超全超详细的电脑蓝屏问题解决方案汇总

    生活太难了!每天搬砖已经够不容易,电脑还作妖: 设计图还差最后一个图层,蓝屏了!!财务工资表格马上统计完,蓝屏了?!熬了一宿马上写完1万字稿件,蓝屏了- 今天,我就带大家轻松搞定蓝屏. 什么是蓝屏 蓝 ...

  5. Shell脚本语言笔记

    Shell脚本语言笔记 一.shell是什么? 二.Shell 是一种脚本语言 1.定义变量 2.单引号和双引号的区别: 3.将命令的结果赋值给变量,常见的有以下两种方式: 4.只读变量 5.删除变量 ...

  6. php和shell脚本语言,将PHP作为Shell脚本语言使用_PHP教程

    #!/usr/local/bin/php -q 上面的代码在运行的时候需要两个参数,分别是姓和名,比如这样子运行: [dbrogdon@artemis dbrogdon]$ scriptname.ph ...

  7. linux脚本语言求累加和,Linux Shell脚本语言与数学表达式

    当你理解了Shell脚本,每当需要时都能流畅编写时,那种感觉很爽的.本章中,我们将教你用脚本语言进行比较复杂的数学运算. 让我们从斐波那契数列开始吧. 斐波那契数列,又称黄金分割数列,指的是这样一个数 ...

  8. linux脚本是什么语言,Linux学习之Shell脚本语言的优势是什么?

    当我们学习Linux技术的时候,会涉及各种各样的知识和内容,比如说shell脚本语言,我想很多人都会疑惑shell脚本语言有什么优势?为何学习Linux的时候必须学习呢?我们来看看吧. 当命令和程序语 ...

  9. 在linux中写php语言吗,将PHP作为Shell脚本语言使用

    我们都知道,PHP是一种非常好的动态网页开发语言(速度飞快,开发周期短--).但是只有很少数的人意识到PHP也可以很好的作为编写Shell脚本的语言,当PHP作为编写Shell脚本的语言时,他并没有P ...

最新文章

  1. 用Python统计分析290种零食,谁能唤起80、90后的童年回忆?
  2. 67. Add Binary
  3. GprMax 3.1.5 建模的in文件编写详解(2)
  4. 程序员写简历时不要犯这种低级的错误!
  5. Python中的输入输出(IO)
  6. 重装系统后管家婆数据库丢失,数据库碎片扫描、提取、重组数据恢复
  7. N1盒子刷机经验分享
  8. FAT32文件系统格式详解(图文针对具体文件存储,分析fat32 SD卡)
  9. Consul4-linux安装consul以及集群搭建
  10. 微信小程序开发之——婚礼邀请函-邀请函页面(4.3)
  11. 浮点数的运算 —— 浮点数的加减运算
  12. 从多个Word文档中批量取值,整理到Excel表中。
  13. Linux修改fstab引起系统无法启动问题的解决方法
  14. 恕我直言,Java四大名著并不一定适合你!
  15. 史上最全《计算机网络 自顶向下方法》答案合集
  16. 林轩田机器学习基石笔记(第23-24节)——上限函数Bounding Function
  17. Java中IO流体系
  18. ui设计培训机构内课程包括哪些板块|优漫动游
  19. 怪物猎人GU-武器派生整理之双刀篇
  20. 解决 plt.savefig() 生成空白图片的问题

热门文章

  1. android 图片 生成视频,照片制作成视频的方案有吗?如何视频安卓手机视频编辑器将手机里的照片制作成视频...
  2. Manacher马拉车算法求最长回文子串
  3. 【无标题】数仓实战之亚马逊全球跨境电商分析平台
  4. android自动滑屏解锁,如何删除/绕过滑动屏幕以解锁Android设备-万兴恢复专家
  5. 实时查看tomcat进程的连接数
  6. react制作一个照片墙小demo
  7. 音视频学习笔记----3,音视频编码基础学习之-YUV与RGB
  8. B端产品经理产品心得(一)
  9. iphone安装低版本App的方法
  10. 图片像素英寸厘米之间的单位换算