shell脚本语言的使用(超全超详细)

 更新时间:2020年04月23日 08:56:05   作者:天 禄  
这篇文章主要介绍了shell脚本语言的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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 直接使用默认解析器解析

三种执行情况:(重要)

注意: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 命令。



可以在终端中读取:


在其他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脚本语言的使用(超全超详细)的文章就介绍到这了,更多相关shell脚本语言内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用shell脚本执行hive、sqoop命令的方法

    使用shell脚本执行hive、sqoop命令的方法

    今天小编就为大家分享一篇使用shell脚本执行hive、sqoop命令的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 详解shell 变量的高级用法示例

    详解shell 变量的高级用法示例

    这篇文章主要介绍了详解shell 变量的高级用法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Shell去除空行的4种方法

    Shell去除空行的4种方法

    这篇文章主要介绍了Shell去除文件中空行的4种方法,本文讲解了使用tr命令、sed命令、awk命令、grep命令等4种命令实现,需要的朋友可以参考下
    2014-11-11
  • linux shell编程指南之字符串与数组

    linux shell编程指南之字符串与数组

    这篇文章主要给大家介绍了关于linux shell编程指南之字符串与数组的相关资料,字符串与数组是Shell编程中常用的数据类型,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • 一天一个shell命令 linux文件内容操作系列-cat命令详解

    一天一个shell命令 linux文件内容操作系列-cat命令详解

    这篇文章主要介绍了一天一个shell命令 linux文件内容操作系列-cat命令详解,需要的朋友可以参考下
    2016-06-06
  • 神奇的shell命令行输入与输出功能介绍

    神奇的shell命令行输入与输出功能介绍

    命令行还是比较常用的,于是我研究了一下shell命令行,在这里拿出来和大家分享一下,希望对大家有用
    2013-02-02
  • 详解Linux ln 命令

    详解Linux ln 命令

    Linux 中的文件分为 Hard Link 和 Symbolic Link 两种。Hard Link 文件又被称为硬链接文件、实体链接文件,Symbolic Link 文件则常被称为符号链接、软链接文件。这篇文章主要介绍了Linux ln 命令 ,需要的朋友可以参考下
    2019-08-08
  • shell脚本正则匹配文件中的Email并写入到文件中代码分享

    shell脚本正则匹配文件中的Email并写入到文件中代码分享

    有时我们会处理日志文件,或其他文本文件,并将里面含有的Email读取出来,可以利用shell处理文件的方法来读取
    2014-04-04
  • Linux中文件的基本属性介绍

    Linux中文件的基本属性介绍

    这篇文章介绍了Linux中文件的基本属性,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • Linux 中批量提取文件夹下所有目录及文件名称

    Linux 中批量提取文件夹下所有目录及文件名称

    这篇文章主要介绍了Linux 中批量提取文件夹下所有目录及文件名称 ,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05

最新评论