问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

shell脚本语言(超全超详细)

创作时间:
作者:
@小白创作中心

shell脚本语言(超全超详细)

引用
CSDN
1.
https://blog.csdn.net/weixin_43288201/article/details/105643692

shell脚本语言

1、shell的概述

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

系统提供的 shell命令解析器有:sh、ash、bash。可以通过 echo $SHELL 查看自己linux系统的默认解析器。

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:指明先用bash解析器解析。如果bash不存在,才会使用默认解析器。
  • . xxx.sh:直接使用默认解析器解析(不会执行第一行的 #! 指定的解析器),但是第一行还是要写的。

三种执行情况:

  • 打开终端就会有以后个解释器,我们称为当前解释器
  • 我们指定解析器的时候(使用 ./xxx.shbash 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 命令或 . 符号。例如:

#!/bin/bash
export DATA=250

使用 source 使文件生效,可以在终端直接中读取,也可以在其他sh脚本中读取。

注意事项

  1. 变量名只能包含英文字母下划线,不能以数字开头
  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

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号