Shell脚本相关命令

介绍

一句话说明shell脚本是个啥

shell脚本就是将多个shell指令汇集到一起去完成一个复杂的功能

类似windows下的批处理文件 一般以sh为文件后缀

语法

程序结构

一张图说明shell脚本的结构是怎样的

如上图所示

右边就是最简单的一个shell脚本 , 功能是打印出"Hello World

左边就是它对应的一个程序结构 ,依次是 shell版本声明 注释部分声明 环境变量声明 程序主体 退出返回

下面依次讲解

shell版本声明

第一行 #!/bin/bash 声明这个 脚本 使用的shell版本:

因为shell有很多种类型 比如sh,bash,csh,tcsh

如果不指定版本 系统会不知道用哪一个版本的shell去处理这个脚本

所以会报错

一般linux发行版默认内置的是bash 所以一般是写#!/bin/bash

注释部分声明

说明程序的作者 功能 编辑时间等等信息

环境变量声明

环境变量是用来定义系统运行环境的一些参数的变量

比如每个用户不同的家目录(HOME)、邮件存放位置(MAIL)等。

具体可以看后端开发必须掌握的Linux命令[变量篇]中的讲解

其中比较重要的一个环境变量是PATH

它代表的是一系列路径的字符串集合

它默认存放了下面的路径地址 如

usr/local/sbin

/usr/local/bin

/usr/sbin

/usr/bin等等

比如当你在shell脚本中调用命令echo的时候

本质上系统就会从PATH存放的路径集合中

去寻找这些路径中是不是包含了命令echo对应的可执行文件

如果找的到 就执行 如果找不到的话你调用echo就会报错

这样就有一个问题

假如你调用的一个比较陌生的命令

它所对应的文件路径

不在PATH默认的路径集合中中

你就需要把它加入PATH (用冒号 等于号)

然后在对它重新声明为环境变量(用export)

这样才可以 否则还是会报错的

一般常用的命令比如ls echo 等等

是默认已经包含在PATH变量的路径集合中了 所以开头不需要声明

这里只是为了讲解程序的标准结构故引出来了

程序主体

普通语句

就是用普通的命令组成的语句

条件语句

简单的if …then

实例:

复杂的if …then

实例:

case…esac

实例:

循环语句

while do done

当while中的条件为真的时候就继续执行

实例:

until do done

当until中的条件为真的时候就结束执行

实例:

for…do…done

实例:

for…do…done的数值处理结构

实例:

退出返回

在我们这个例子当中,使用 exit 0 ,

这代表离开 script 并且回传一个 0 给系统,

所以执行完这个 script 后,若接着下达 echo $? 则可得到0 值!

利用这个 exit n (n 是数字) 的功能,我们还可以自定义错误返回值 从而使程序更聪明

执行

假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限

执行方法一:通过路径

1、相对路径

cd /data/shell

./hello.sh

2、绝对路径

/data/shell/hello.sh

执行方法二:通过sh或bash

sh

cd /data/shell

sh hello.sh

bash

cd /data/shell

bash hello.sh

执行方法三:通过 source 或.(点号)

source

cd /data/shell

source hello.sh

.

cd /data/shell

. hello.sh

区别:

1.绝对路径和相对路径没有什么区别,两种方式都需要提前赋予脚本以执行权限。

2.sh或者bash方式是把脚本当做bash的调用来处理,所以,脚本不需要有执行权限就可以执行。

前两种方式都是在当前shell中打开一个子shell来执行脚本内容,当脚本内容结束,则子shell关闭,回到父shell中。

3.source或者.方式是使脚本内容在当前shell里执行,而不是单独开子shell执行。

4.开子shell与不开子shell的区别就在于,环境变量的继承关系,如在子shell中设置的当前变量,

不做特殊通道处理的话,父shell是不可见的。

而在当前shell中执行的话,则所有设置的环境变量都是直接生效可用的。

调试

linux循环处理脚本命令,后端开发必须掌握的Linux命令[Shell脚本篇]相关推荐

  1. Linux 常用Shell脚本,后端开发必备

    Linux 常用Shell脚本,后端开发必备 文章目录 Linux 常用Shell脚本,后端开发必备 1 用户猜数字 2 查看有多少远程的 IP 在连接本机 3 helloworld 4 打印 tom ...

  2. 挑战360无死角讲解Linux内核 进程管理,调度器的5种实现丨C++后端开发丨C/C++Linux服务器开发丨内核开发丨网络编程

    挑战360无死角讲解 进程管理,调度器的5种实现 1. 8500行 CFS是什么 2. RT调度器使用场景 3. IDLE/Dealine调度器 视频讲解如下,点击观看: 挑战360无死角讲解Linu ...

  3. shell for循环命令行_精心汇总的24道shell脚本面试题

    虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到 shell 脚本的问题,它有助于你在工作环境中自动完成很多任务. 如下是一些面试过程中,经常会遇 ...

  4. linux sed 测试文件夹,测试开发笔记二(Linux与Shell脚本)

    01 | Linux系统和Shell环境准备 运行shell test.sh #!/bin/bash echo "hello" 运行脚本 方式一: chmod+x ./test.s ...

  5. 嵌入式系统实验 构建嵌入式Linux系统,《嵌入式系统与开发》构建嵌入式Linux系统-实验报告.doc...

    <嵌入式系统与开发>构建嵌入式Linux系统-实验报告 <嵌入式数据库sqlite移植及使用> 实验报告 学生姓名: 陈 彤 学 号: 1座机电话号码 专业班级: 130044 ...

  6. 后端技术:Spring Boot 项目打包 + Shell 脚本部署实践,太有用了!

    本篇和大家分享的是 Spring Boot 打包并结合 Shell 脚本命令部署,重点在分享一个shell 程序启动工具,希望能便利工作: profiles指定不同环境的配置 maven-assemb ...

  7. Shell入门笔记:Linux批量提取文件名/shel文件名提取日期/NCL批量读取文件(shell脚本结合)

    在大型计算时,我们会使用linux系统,而linux系统下使用Shell脚本进行一些批处理任务会十分方便,在这里,我将以我个人遇到的问题为例,结合Shell语言的一些常用命令和知识点,完成对于Shel ...

  8. linux eclipse java_实验一 Java开发环境的熟悉(Linux + Eclipse)

    学号 20175206 实验一 <Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实 ...

  9. Linux的基本学习(八)——正则、文本处理以及shell脚本

    前言: 承接前面的内容 正则表达式: 之前写过一个正则表达式的文章,大家可以先看看那篇文章 概念: 简单地说,正则表达式就是处理字符串的方法,它以行为单位来进行字符串的处理操作,正则表达式通过一些特殊 ...

最新文章

  1. 2021年大数据Spark(六):环境搭建集群模式 Standalone
  2. jqueryGannt用法
  3. linux语法错误 未预期的文件结尾,centos shell运行报语法错误: 未预期的文件结尾...
  4. erlang mysql连接超时_Erlang数据库-(一)Erlang与Mysql的连接
  5. [logstash-input-log4j]插件使用
  6. 53. 最大子数组和(JavaScript)
  7. 千亿市场空间开启!网络安全开启新纪元步入黄金时代
  8. 【java笔记】random类生成随机数
  9. 运用freemark引擎的word模板导出
  10. js实现幻灯片案例解析
  11. Linux学习笔记-shell脚本-log脚本函数
  12. Shell--点名器脚本,实现点名去重。
  13. amazon账号关联第一步你做好了吗?
  14. A. 贝壳找房性价比
  15. 网络基础服务器 与SMP、NUMA、MPP 三大体系结构科普
  16. [心得]google软件工程师技术准备
  17. 简单快速上手JAVA操作Excel
  18. dnf服务器延迟过大,“解决DNF在使用宽带路由器时造成延迟较大的问题”的解决方案...
  19. 基于Windows8与Visual Studio11开发第一个内核驱动程序
  20. 再看K60——寄存器配置

热门文章

  1. python显卡利用率_Linux和Windows查看当前运行的 python 进程及 GPU、磁盘利用率
  2. scheme http https 区别 tls_HTTPS、HTTP、TLS/SSL工作及握手原理、PKI/CA密钥体系
  3. UDP/TCP网络传输方式
  4. 进程、线程、协程对比
  5. 如何得到发送邮件服务器地址(SMTP地址)
  6. asp.net通过webservice调用java接口全过程_100-RPC、RMI、WebService、httpClient、跨域、集群部署...
  7. 相机中影响成像质量的参数
  8. 循环序列模型 —— 1.3循环神经网络
  9. Matlab--m代码转C与C++代码)2(详尽示例与描述)
  10. LPeg 0 10的编译与使用