shell脚本语言(超全超详细)[通俗易懂]

您所在的位置:网站首页 shell脚本文件一般以什么开头 shell脚本语言(超全超详细)[通俗易懂]

shell脚本语言(超全超详细)[通俗易懂]

2024-06-14 17:24| 来源: 网络整理| 查看: 265

大家好,又见面了,我是你们的朋友全栈君。

shell脚本语言1、shell的概述2、脚本的调用形式 打开终端时系统自动调用:/etc/profile 或 ~/.bashrc3、shell语法初识 3.1、定义以开头:#!/bin/bash3.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、case8.3、for循环语句 案例:案例:扫描当前文件8.4、while8.5、until8.6、break continue9、函数 案例:求最值案例:函数分文件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

代码语言:javascript复制#!/bin/bash expor DATA=250

用source 是文件生效

在这里插入图片描述在这里插入图片描述

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

在这里插入图片描述在这里插入图片描述

可以在终端直接中读取:

在这里插入图片描述在这里插入图片描述

在其他sh脚本读取:

在这里插入图片描述在这里插入图片描述

运行结果:

在这里插入图片描述在这里插入图片描述注意事项:

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

在这里插入图片描述在这里插入图片描述

运行结果:

在这里插入图片描述在这里插入图片描述

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

代码语言:javascript复制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控制语句代码语言:javascript复制格式一: 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

在这里插入图片描述在这里插入图片描述

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157211.html原文链接:https://javaforall.cn



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3