shell脚本执行过程

C# Socket网络通信UDP(关键字:Socket) 简单Socket-Udp通信 在本文中涉及到通信,仅做简单的通信(服务端接受消息,由客户端发出消息) 如有需要,根据需求可直接copy使用 关键字Socket 需要引用命名空间: using System.Net; using System.Net.Sockets; 服务端: using System; using System.Net; using System.Net.Sockets; u... 阅读详情

一、先看一个简单的脚本执行过程
这里写图片描述
shell脚本中以#表示注释。但是如果#位于第一行并且后面是感叹号,它表示该脚本使用后面指定的解释器解释执行。#!/bin/bash叫做shebang,它指定了解释器。
因为编写好的shell脚本文件是一个普通文本文件,所以我们要对它赋予可执行权限才可以执行。或者直接使用解释器对文本文件进行解释执行。
这里写图片描述

二、shell的执行过程
1、非内置命令和内置命令
内置命令会改变shell的参数,比如cd,echo,exit等。内置命令实际上shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行。通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内置命令是写在bashy源码里面的,其执行速度比外部命令快,因为内部命令shell不需要创建子进程。
非内置命令他不会改变shell的参数,比如ls。非内置命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以包含的程序量很大,在系统加载时并不随系统一起被加载到内存中,而是在需要的时候才将其调入内存。通常非内置命令的实体并不包含在shell中,但是其命令执行过程是由shell控制的。shell程序管理非内置命令执行的路径查找、加载存放、控制命令的执行。非内置命令是在bash之外安装的,通常放在/bin、/usr/bin,/sbin、/usr/bin等下面。
一般而言,which命令能够查到的命令都是非内置命令。还有type也可以判别内置和非内置命令。

2、对于非内置命令,比如ls,它的执行过程如图:
这里写图片描述
对于非内置命令,父shell先fork一个子shell,然后子进程去执行bash的代码,从文本中一行一行的读取命令,然后再派生一个孙子进程去执行这些命令。

3、source和”.”命令
先来看一个有趣的例子:
这里写图片描述
会发生这样的现象是因为”./test.sh”它是被fork出来的子shell执行的,所以不会影响到父shell。而”source”和”.”命令都是shell的内置命令,他会在当前shell下执行。source还有一个功能就是使得配置文件立即生效,不用重启直接source运行一下就生效。

4、{}和()命令
{}和()都是成组命令,里面可以运行多条命令,但是他们的区别又是什么呢?
这里写图片描述
可以看到{}会让当前交互式shell去执行命令,而()会让子shell去执行命令。

三、shell的调试
1、sh -x 可执行脚本文件名
这里写图片描述
2、调试一部分。
set -x:开启调试。
set +x:关闭调试。
这里写图片描述

MATPOWER下载安装教程 将MATPOWER文件复制在C:\Program Files (x86)\MATLAB\R2016b\bin目录下。原来的窗口中多了很多文件路径,点击【保存】,再点击【关闭】选择所要添加的MATPOWER文件夹,点击【选择文件夹】二、将MATPOWER放在bin目录下。找到菜单栏的【设置路径】点击【添加并包含子文件】一、从官网下载后解压。 阅读详情

相关推荐

dify源码本地部署,dify k8s部署

Dify.AI 是一款简单易用且开源的 LLMOps 平台,帮助开发者更简单、更快速地创建 AI 应用。它的核心理念是通过可声明式的 YAML 文件定义 AI 应用的各个方面,包括 Prompt、上下文和插件等。Dify 提供了可视化的 Prompt 编排、运营、数据集管理等功能。这些功能使得开发者能够在数天内完成 AI 应用的开发,或将 LLM 快速集成到现有应用中,并进行持续运营和改进。

shykevin的博客 1015

Shell执行流程详细解释

Shell执行流程详细解释 系统启动时,内核会为用户建立一个终端进程来执行shell程序,工作流程如下 读取从键盘输入的命令 判断命令是否正确,且将命令行的参数改造为系统调用execve() 内部处理所要求的形式 终端进程调用fork() 来创建子进程,自身则用系统调用wait() 来等待子进程完成 当子进程运行时,它调用execve() 根据命令的名字指定的文件到目录中查找可行性文件,调入内存并执行这个命令 如果命令行末尾有后台命令符号& 终端进程不执行等待系统调用,而是立即发提示符,让用户

weixin_45509705的博客 1765

CANOCO5.0实现冗余分析(RDA)最详细步骤

在地理及生态领域会常使用RDA分析,RDA的实现路径也有很多,今天介绍一下CANOCO软件的实现方法。1.不同样点和环境因子之间夹角是锐角 是正相关,是钝角是负相关。2.夹角越大 说明相关性较小,夹角越小,相关性越大。得有不同的物种或者样点数值,再加上环境因子数据。3.箭头越长 相关性越大。时间调整到2010年。

Along6的博客 1万+

linux启动一个进程吗,你知道,当你在 Linux 上启动一个进程时会发生什么嘛?

原标题:你知道,当你在 Linux 上启动一个进程时会发生什么嘛?本文是关于 fork 和 exec 是如何在 Unix 上工作的。你或许已经知道,也有人还不知道。几年前当我了解到这些时,我惊叹不已。 我们要做的是启动一个进程。我们已经在博客上讨论了很多关于系统调用的问题,每当你启动一个进程或者打开一个文件,这都是一个系统调用。所以你可能会认为有这样的系统调用:start_process(["ls...

weixin_39763033的博客 290

硬件级Dalvik字节码粒度无痕HOOK及VMP取址码定位分析

2.通过硬件读写断点的输出信息 可知pc寄存器就是art解释器的取码地址 直接硬件执行断点在这个pc 即可直接trace所有的smali执行流 通杀所有机型系统。本文即将探讨的是 如何在硬件级别实现dalvik bytecode粒度的无痕拦截技术 并实现鼠标点击一键hook 指哪儿打哪儿 感受 button power 的强大魅力!4.由于硬件断点是同步的 断下后可随时硬件dump下这一瞬间的app内存映像 写入unicorn的内存模拟执行。解释器在解释执行前必会读取内存中的bytecode。

2503_90751789的博客 1085

python知网爬虫论文pdf下载+立即可用(动态爬虫)

python实现动态爬虫知网论文,搜索+自动翻页+下载 收集数据利器

Braylon的博客 5379

shell命令执行顺序

command1 ; command2 --两条命令,连续执行,command2不需要考虑command1的结果 command1 && command2 --command1执行没有出错(即回传值为0),command2才执行 command1 || command2 --command1执行出错才执行command2

yjgithub的博客 721

数据基础设施建设任务中的技术名词解析

近日,国家数据局确定了18个数据基础设施建设任务(先行先试)承担地区,建设任务内容为:数场、数据空间、数据原件、隐私计算、数联网、区块链。这些概念都有什么样的内涵,他们的相互关系是怎样的?

五角大寨 5305

Shell脚本执行过程

一、#!有什么用 脚本程序几乎都开始于#! 符号。这个符号叫做声明解释器。 #! 就是用来声明本文件交给哪个解释器进行解释的。比如我们写bash脚本,一般声明的方法是 #!/bin/bash或 #!/bin/sh。如果写的是一个Python脚本,就用 #!/usr/bin/python。 大多数脚本语言都是将#后面出现的字符当作是注释,在脚本中并不起作用。这个 #! 和这个注释的规则不冲突么? 对脚本第一行的 #! 解析,其实是内核做的,不是脚本解释器做的。为什么 #! 一定要写在第一行的前两个字符,因为

void的博客 1841

VisionMaster Qt二次开发:图像获取、COM组件渲染与本地化存储实战

本文详细介绍了基于VisionMaster进行Qt二次开发的核心实战流程,涵盖环境搭建、方案加载、图像数据获取、COM组件渲染与本地化存储。重点解析了如何通过COM组件在Qt界面中实时显示图像,以及将VM图像数据转换为QImage并保存为本地文件的关键步骤与常见问题,为工业视觉项目开发提供稳定高效的解决方案。

weixin_29229261的博客 206

YOLOv8车辆碰撞识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置+目标检测)

随着我国汽车保有量的持续攀升,道路交通事故数量居高不下,车辆碰撞损伤的快速、精准评估已成为交通安全管理、保险理赔定损以及汽车后市场服务中的关键环节。传统的人工目视查验方法高度依赖评估人员的专业经验,不仅主观性强、效率低下,而且在复杂光照、多角度遮挡等真实场景下难以保证评估的一致性和可复现性。计算机视觉与深度学习技术的迅猛发展,为目标检测任务提供了强有力的技术支撑,使得基于视觉的车辆损伤自动化识别成为可能。

斌擎科技 129

Shell基础——Shell执行过程

Shell读取并执行命令时,基本上会执行如下操作: 读取输入。Shell输入的来源有三种:文件(Shell脚本),调用bash命令时-c选项提供的参数,用户终端。

zjysource的专栏 933

ICP-10111气压传感器原理图设计,已量产(压力传感器)

在最近的室内导航定位项目中,我们需要一款能捕捉厘米级垂直高度变化的气压传感器 —— 毕竟室内环境里,哪怕是单个台阶的高度差都得精准识别。对比了几款器件后,最终选定了 ICP-10111:它 ±1Pa 的压差精度刚好能把高度差分辨到 8.5cm,0.4Pa 的低压力噪声能让数据输出足够稳定,再加上 0.5Pa/℃的低温漂特性,长期工作的可靠性也能满足需求。下面聊聊这套适配 ICP-10111 的硬件电路设计细节。

不脱发的程序猿 333

Shell脚本调试方法 Shell脚本执行的过程

1Shell脚本调试方法 Shell提供了一些用于调试脚本的选项: -n,读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。-v,一边执行脚本,一边将执行过的脚本命令打印到标准错误输出。-x,提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。 使用这些选项有三种方法。比如现有如下已获取运行权限脚本文件function.sh:

记一忘三二 2万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

执行shell脚本时,如果你想打印出执行过程

如果你想打印出脚本的每一行内容(而不只是执行的命令),可以使用。这会在终端上显示脚本执行的每个步骤,包括变量的值和命令的输出。这些方法可以帮助你更好地调试和监控shell脚本的执行过程.如果你想在脚本出错时停止执行并打印出错误信息,可以使用。如果你已经进入了脚本所在的目录,可以在命令行中先设置。这样可以在不修改脚本的情况下,看到脚本的执行过程.如果你想同时将输出打印到终端和文件,可以使用。命令来打印出关键步骤的信息。

喝醉酒的小白 2204

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

shell-1脚本执行过程

shell脚本执行过程

jiushiggg的专栏 2149

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

linux脚本执行顺序,Shell脚本的执行过程、执行方式详解

当Shell脚本运行时,它会先查找系统环境变量ENV,该变量指定了环境文件(加载顺序通常是/etc/profile、~/.bash_profile、~/.bashrc、/etc/bashrc等),在加载了上述环境变量文件后,Shell就开始执行Shell脚本中的内容。Shell脚本是从上至下、从左至右依次执行每一行的命令及语句的,即执行完了一个命令后再执行下一个,如果在Shell脚本中遇到子脚本(...

weixin_35671171的博客 2332

shell脚本执行过程分析

一.shell脚本父子进程分析   代码: [cpp] view plain copy #!/bin/bash   echo $$   ps -ef |grep `echo $$`   echo "-------------------------------------"   ( pwd;echo  ;ps−ef|gr

real.me 5822

用shell脚本执行mysql存储过程小记

用shell脚本执行mysql存储过程

wowtous 3936

shell脚本显示执行过程

Bash shell脚本打印出正在执行的命令,可以在shell脚本文件中添加-v/-x,例如: #!/bin/bash set -v 或者 #!/bin/bash -v 例如脚本 c2.sh: set -v echo 'hello world' # 查找空文件夹 find ./ -type d -empty 执行: $ sh c2.sh echo 'hello world' hello world # 查找空文件夹 find ./ -type d -empty ./.git/fsmonitor-

荷塘月色 6012

linux中shell脚本的执行过程

Shell解释器是执行Shell脚本的主要组件,它读取和解释脚本,并将其转换为计算机可以理解的指令。在执行脚本时,系统将使用默认的Shell解释器,并执行脚本中的命令和操作。在本文中,我们将详细介绍Shell脚本的执行过程,包括Shell解释器的作用,脚本的解释和执行,命令的执行和输出,以及错误处理。当我们执行Shell脚本时,系统将自动查找默认的Shell解释器,并使用它来解释和执行脚本。在执行这个脚本时,系统将自动查找Bash解释器,并使用它来解释和执行脚本。首先,系统将读取脚本的第一行,并根据#!

记录 IT 领域经验与见解的博客 2018

Shell 脚本 | 执行存储过程 最简单方法

"proc_name3(123, 'abc')"# 多个参数的存储过程。"proc_name2('param1')" # 带参数的存储过程。DB_USER="your_username" # 数据库用户名。DB_NAME="your_database" # 数据库名称。DB_PASS="your_password" # 数据库密码。log "===== 开始执行存储过程批量调用 ====="log "===== 存储过程批量调用结束 ====="log "开始执行存储过程: $proc"

2401_87805203的博客 387

java代码中调用执行shell脚本,sqlldr导数与使用sqlplus在shell调用执行存储过程

java代码中调用shell脚本如下: RmtShellExecutor exe = new RmtShellExecutor("18.81.17.121", "erm", "gdserm"); // 执行imp_etl.sh 参数为cc00009991 int status = exe.exec("sh /home/erm/CMIS_DATA/bin/imp_etl.sh cc000099

MissMyHome的专栏 2633

shell脚本执行过程中发生了修改,会继续执行原来的脚本吗?

shell脚本执行过程中发生了修改,会继续执行原来的脚本吗? 问题描述 shell脚本应该是解释性执行,那么: 如果一个shell脚本还没有执行完成时,对shell脚本进行了修改,会产生什么后果呢? 脚本会从当前执行的位置后按照修改的脚本内容执行; 脚本依旧按照修改之前的脚本内容执行完成脚本; 问题答案 我在执行一键自动化搭建rac的脚本时,由于是搭建备库rac 所以不需要新建实例,于是我将相关建库的函数注释掉了,看create_db能不能跳过不执行。 结果如何? 会继续执行原来的脚本不会运行修改后

不如打代码 3917

Shell脚本的执行过程、执行方式详解

当Shell脚本运行时,它会先查找系统环境变量ENV,该变量指定了环境文件(加载顺序通常是/etc/profile、~/.bash_profile、~/.bashrc、/etc/bashrc等),在加载了上述环境变量文件后,Shell就开始执行Shell脚本中的内容。 Shell脚本是从上至下、从左至右依次执行每一行的命令及语句的,即执行完了一个命令后再执行下一个,如果在Shell脚本中遇到子脚本...

小健健的博客 2588
上一篇: shell编程之符号与变量
下一篇: 通讯录第四版
午饭要阳光
博客等级 码龄11年 749粉丝 283原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值