linux循环处理脚本命令,后端开发必须掌握的Linux命令[Shell脚本篇]
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脚本篇]相关推荐
- Linux 常用Shell脚本,后端开发必备
Linux 常用Shell脚本,后端开发必备 文章目录 Linux 常用Shell脚本,后端开发必备 1 用户猜数字 2 查看有多少远程的 IP 在连接本机 3 helloworld 4 打印 tom ...
- 挑战360无死角讲解Linux内核 进程管理,调度器的5种实现丨C++后端开发丨C/C++Linux服务器开发丨内核开发丨网络编程
挑战360无死角讲解 进程管理,调度器的5种实现 1. 8500行 CFS是什么 2. RT调度器使用场景 3. IDLE/Dealine调度器 视频讲解如下,点击观看: 挑战360无死角讲解Linu ...
- shell for循环命令行_精心汇总的24道shell脚本面试题
虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到 shell 脚本的问题,它有助于你在工作环境中自动完成很多任务. 如下是一些面试过程中,经常会遇 ...
- linux sed 测试文件夹,测试开发笔记二(Linux与Shell脚本)
01 | Linux系统和Shell环境准备 运行shell test.sh #!/bin/bash echo "hello" 运行脚本 方式一: chmod+x ./test.s ...
- 嵌入式系统实验 构建嵌入式Linux系统,《嵌入式系统与开发》构建嵌入式Linux系统-实验报告.doc...
<嵌入式系统与开发>构建嵌入式Linux系统-实验报告 <嵌入式数据库sqlite移植及使用> 实验报告 学生姓名: 陈 彤 学 号: 1座机电话号码 专业班级: 130044 ...
- 后端技术:Spring Boot 项目打包 + Shell 脚本部署实践,太有用了!
本篇和大家分享的是 Spring Boot 打包并结合 Shell 脚本命令部署,重点在分享一个shell 程序启动工具,希望能便利工作: profiles指定不同环境的配置 maven-assemb ...
- Shell入门笔记:Linux批量提取文件名/shel文件名提取日期/NCL批量读取文件(shell脚本结合)
在大型计算时,我们会使用linux系统,而linux系统下使用Shell脚本进行一些批处理任务会十分方便,在这里,我将以我个人遇到的问题为例,结合Shell语言的一些常用命令和知识点,完成对于Shel ...
- linux eclipse java_实验一 Java开发环境的熟悉(Linux + Eclipse)
学号 20175206 实验一 <Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实 ...
- Linux的基本学习(八)——正则、文本处理以及shell脚本
前言: 承接前面的内容 正则表达式: 之前写过一个正则表达式的文章,大家可以先看看那篇文章 概念: 简单地说,正则表达式就是处理字符串的方法,它以行为单位来进行字符串的处理操作,正则表达式通过一些特殊 ...
最新文章
- 2021年大数据Spark(六):环境搭建集群模式 Standalone
- jqueryGannt用法
- linux语法错误 未预期的文件结尾,centos shell运行报语法错误: 未预期的文件结尾...
- erlang mysql连接超时_Erlang数据库-(一)Erlang与Mysql的连接
- [logstash-input-log4j]插件使用
- 53. 最大子数组和(JavaScript)
- 千亿市场空间开启!网络安全开启新纪元步入黄金时代
- 【java笔记】random类生成随机数
- 运用freemark引擎的word模板导出
- js实现幻灯片案例解析
- Linux学习笔记-shell脚本-log脚本函数
- Shell--点名器脚本,实现点名去重。
- amazon账号关联第一步你做好了吗?
- A. 贝壳找房性价比
- 网络基础服务器 与SMP、NUMA、MPP 三大体系结构科普
- [心得]google软件工程师技术准备
- 简单快速上手JAVA操作Excel
- dnf服务器延迟过大,“解决DNF在使用宽带路由器时造成延迟较大的问题”的解决方案...
- 基于Windows8与Visual Studio11开发第一个内核驱动程序
- 再看K60——寄存器配置
热门文章
- python显卡利用率_Linux和Windows查看当前运行的 python 进程及 GPU、磁盘利用率
- scheme http https 区别 tls_HTTPS、HTTP、TLS/SSL工作及握手原理、PKI/CA密钥体系
- UDP/TCP网络传输方式
- 进程、线程、协程对比
- 如何得到发送邮件服务器地址(SMTP地址)
- asp.net通过webservice调用java接口全过程_100-RPC、RMI、WebService、httpClient、跨域、集群部署...
- 相机中影响成像质量的参数
- 循环序列模型 —— 1.3循环神经网络
- Matlab--m代码转C与C++代码)2(详尽示例与描述)
- LPeg 0 10的编译与使用