当前位置: 首页 > news >正文

【Shell】脚本

Shell脚本

  • 脚本格式
  • 第一个Shell脚本:hello.sh
  • 脚本常用执行方式
    • 1. bash或sh+脚本的相对路径或绝对路径
    • 2. 输入脚本的绝对路径或相对路径
    • 3. 在脚本的路径前加上.或者source

脚本格式

脚本以#!/bin/bash开头(指定解析器)

#! 是一个约定的标记,告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

第一个Shell脚本:hello.sh

需求:创建一个shell脚本,输出hello world!

root@ubuntu:/home/yys# mkdir scripts	#创建文件夹
root@ubuntu:/home/yys# cd scripts
root@ubuntu:/home/yys/scripts# touch hello.sh	#创建文件
root@ubuntu:/home/yys/scripts# vim hello.sh		#编辑文件

若出现如下报错:

The program 'vim' can be found in the following packages:* vim* vim-gnome* vim-tiny* vim-athena* vim-gtk* vim-nox
Try: sudo apt-get install <selected package>

解决方法

界面如下在这里插入图片描述
输入

#!/bin/bash
echo "hello world!"

第一个Shell脚本就写好了,输入命令:wq保存并退出
若输入时出现报错E348:No string under cursor
解决方法

脚本常用执行方式

1. bash或sh+脚本的相对路径或绝对路径

当前目录下输入命令bash [filename]
在这里插入图片描述
其他目录下,输入相对路径执行bash scripts/[filename]
在这里插入图片描述
或使用绝对路径
在这里插入图片描述

2. 输入脚本的绝对路径或相对路径

  1. 赋予脚本的+x权限
    chmod +x [filename]
    在这里插入图片描述

有可执行权限时文件名变为绿色

  1. 执行脚本
    相对路径
    其中 . 指当前工作目录
    在这里插入图片描述
    绝对路径
    在这里插入图片描述

注意:必须具有可执行权限,即+x,否则报错
在这里插入图片描述
查看文件权限的方法:输入命令ll [文件夹]
在这里插入图片描述
如果在当前工作目录下有.sh文件,直接输入命令[filename].sh,shell会当作一条命令处理,会报错未找到命令,不能执行。
第一种方式相当于使用bash命令,开启一个bash进程,文件名相当于参数,本质是bash解析器执行脚本,所以脚本本身不需要执行权限;第二种方式实在当前的bash环境执行脚本,所以必须要有可执行权限。

3. 在脚本的路径前加上.或者source

在这里插入图片描述
在这里插入图片描述
source. 是bash shell的内部命令
在这里插入图片描述
前两种方式是在当前shell打开一个子shell脚本来执行脚本内容,当脚本内容结束则关闭子shell,回到父shell中。

实例:
在这里插入图片描述
61563是2493的子进程
在这里插入图片描述
此时退出子进程

第三种方式可以使脚本内容在当前shell里执行,而无需打开子shell。这也是每次修改完/etc/profile后,需要source的原因。

两者的区别在于环境变量的继承关系,如在子shell中设置的当前变量,父shell是不可见的。

相关文章:

【Shell】脚本

Shell脚本脚本格式第一个Shell脚本&#xff1a;hello.sh脚本常用执行方式1. bash或sh脚本的相对路径或绝对路径2. 输入脚本的绝对路径或相对路径3. 在脚本的路径前加上.或者source脚本格式 脚本以#!/bin/bash开头&#xff08;指定解析器&#xff09; #! 是一个约定的标记&…...

Mybatis的多表操作

1.Mybatis多表查询 1.1一对一查询 1.一对一查询的模型 用户表和订单表的关系为&#xff0c;一个用户有多个订单&#xff0c;一个订单只从属于一个用户 一对一查询的需求&#xff1a;查询一个订单&#xff0c;与此同时查询出该订单所属的用户2.创建Order和User实体public class…...

【JVM】字节码指令全解

文章目录 入门案例原始 java 代码编译后的字节码文件常量池载入运行时常量池方法字节码载入方法区main 线程开始运行,分配栈帧内存执行引擎开始执行字节码bipush 10istore_1ldc #3istore_2iload_1iload_2iaddistore_3getstatic #4iload_3invokevirtual #5return条件判断指令循…...

【精品】华为认证数通HCIA+HCIP题库分享(含答案解析)

嗨~大家好久不见&#xff0c;我是薄荷学姐&#xff0c;随着华为业务也全球领域的迅猛发展&#xff0c;越来越多人开始重视华为认证的重要性。今天给大家分享一下去年8月份的题库&#xff0c;基本都是一样&#xff0c;希望可以帮助到大家哈想要通过华为认证&#xff0c;除了进行…...

Qt cmake 资源文件的加载

Qt cmake 资源文件的加载概述qt_add_resourcesqt5_add_resourcesqt6_add_resources是否需要加载qrc文件需要加载qrc的情况不需要加载qrc的情况C 代码加载示例加载PNG加载CSS文件加载qrc文件Qt6相对于Qt5的一些变化Qt6和Qt5在加载资源文件方面的区别主要集中在两个方面&#xff…...

【链表OJ题(九)】环形链表延伸问题以及相关OJ题

环形链表OJ题 1. 环形链表 链接&#xff1a;141. 环形链表 描述&#xff1a; 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&…...

【C++初阶】四、类和对象(下)

文章目录一、再谈构造函数构造函数体赋值初始化列表explicit关键字二、Static成员引入- 计算类中创建了多少个类对象概念特性静态成员函数的访问三、友元友元函数友元类四、内部类五、匿名对象六、拷贝对象时的一些编译器优化一、再谈构造函数 构造函数体赋值 在创建对象时&a…...

IDEA maven没有Import Maven projects automatically解决办法

去年装了个 IDEA2022版本 配置maven时我才发现是个大坑 他没有import Maven projects automatically配置项 当时看到我人都麻了 然后项目呢 用了依赖 这东西还不会自动下依赖 整的我那是相当难受 还在最后还是找到了解决办法 我们在配置文件上点击右键 然后鼠标选择如下图选项…...

Java实习生------MySQL10道面试题打卡

今日语录&#xff1a;“没有执行力&#xff0c;就没有竞争力 ”&#x1f339; 参考资料&#xff1a;图解MySQL、MySQL面试题 1、事务有哪些特性&#xff1f; 原子性&#xff1a; 一个事务中的所有操作&#xff0c;要么全部完成&#xff0c;要么全部不完成&#xff0c;不会出现…...

帆软报表设计器 数据集之数据库查询

当点击数据库查询时,调用TableDataTreePane的 public void actionPerformed(ActionEvent var1) {TableDataTreePane.this.dgEdit(this.getTableDataInstance().creatTableDataPane(), TableDataTreePane.this.createDsName(this.getNamePrefix()), false);} 然后调用TableDat…...

CSDN 第三十七期竞赛题解

很少有时间来玩玩题目&#xff0c;上一次因为环境极为嘈杂的原因在时间上没有进入前十&#xff0c;挺遗憾的。 在 CSDN 参加的第一次没出锅的比赛。 大概只有最后一题值得好好讲讲。 T1&#xff1a;幼稚班作业 幼稚园终于又有新的作业了。 老师安排同学用发给同学的4根木棒拼接…...

Vue实战【常用的Vue小魔法】

目录&#x1f31f;前言&#x1f31f;能让你首次加载更快的路由懒加载&#xff0c;怎么能忘&#xff1f;&#x1f31f;你是否还记得有一个叫Object.freeze的方法&#xff1f;&#x1f31f;异步组件那么强&#xff0c;你是不是没用过&#xff1f;&#x1f31f;你是不是还在comput…...

用C跑爬虫

爬虫自指定的URL地址开始下载网络资源&#xff0c;直到该地址和所有子地址的指定资源都下载完毕为止。 下面开始逐步分析爬虫的实现。 待下载集合与已下载集合 为了保存需要下载的URL&#xff0c;同时防止重复下载&#xff0c;我们需要分别用了两个集合来存放将要下载的URL和…...

【C语言】你真的了解结构体吗

引言✨我们知道C语言中存在着整形(int、short...)&#xff0c;字符型(char)&#xff0c;浮点型(float、double)等等内置类型&#xff0c;但是有时候&#xff0c;这些内置类型并不能解决我们的需求&#xff0c;因为我们无法用这些单一的内置类型来描述一些复杂的对象&#xff0c…...

血氧仪是如何得出血氧饱和度值的?

目录 一、血氧饱和度概念 二、血氧饱和度监测意义 三、血氧饱和度的监测方式 四、容积脉搏波计算血氧饱和度原理 五、容积脉搏波波形的测量电路方案 1&#xff09;光源和光电探测器的集成测量模块&#xff1a;SFH7050—反射式 2&#xff09;模拟前端 六、市面上血氧仪类型…...

Java全栈知识(3)接口和抽象类

1、抽象类 抽象类就是由abstract修饰的类,其中没有只声明没有实现的方法就是抽象方法&#xff0c;抽象类中可以有0个或者多个抽象方法。 1.1、抽象类的语法 抽象类不能被final修饰 因为抽象类是一种类似于工程中未完成的中间件。需要有子类进行继承完善其功能&#xff0c;所…...

JavaScript == === Object.is()

文章目录JavaScript & & Object.is() 相等运算符 全等运算符Object.is() 值比较JavaScript & & Object.is() 相等运算符 相等运算符&#xff0c;会先进行类型转换&#xff0c;将2个操作数转为相同的类型&#xff0c;再比较2个值。 console.log("10&…...

GPT4论文翻译 by GPT4 and Human

GPT-4技术报告解读 文章目录GPT-4技术报告解读前言&#xff1a;摘要1 引言2 技术报告的范围和局限性3 可预测的扩展性3.1 损失预测3.2 人类评估能力的扩展4 能力评估4.1 视觉输入 !!!5 限制6 风险与缓解&#xff1a;7 结论前言&#xff1a; 这篇报告内容太多了&#xff01;&am…...

inode和软硬链接

文章目录&#xff1a;一、理解文件系统1.1 什么是inode1.2 磁盘了解1.2.1磁盘的硬件结构1.2.2 磁盘的分区1.2.3 EXT2文件系统二、软硬链接2.1 软链接2.2 硬链接一、理解文件系统 1.1 什么是inode inodes 是文件系统中存储文件元数据的数据结构。每个文件或目录都有一个唯一的 …...

简单分析Linux内核基础篇——initcall

写过Linux驱动的人都知道module_init宏&#xff0c;因为它声明了一个驱动的入口函数。 除了module_init宏&#xff0c;你会发现在Linux内核中有许多的驱动并没有使用module_init宏来声明入口函数&#xff0c;而是看到了许多诸如以下的声明&#xff1a; static int __init qco…...

SGMICRO圣邦微 SGM8740YC5G/TR SC70-5 比较器

特性 快速&#xff0c;45纳秒传播延迟(10毫伏过驱动)低功耗:在Vs3V时为155pA(典型值) 宽电源电压范围:2.7V至5.5V优化适用于3V和5V应用轨到轨输入电压范围低偏置电压:0.9mV(典型值)内部迟滞以实现干净开关 输出摆幅:在4mA输出电流下&#xff0c;从轨距内.200mV范围内 与CMOS/TT…...

WAN2.2文生视频开源镜像快速上手:ComfyUI界面操作+SDXL Prompt Styler详解

WAN2.2文生视频开源镜像快速上手&#xff1a;ComfyUI界面操作SDXL Prompt Styler详解 想试试用几句话就让AI帮你生成一段视频吗&#xff1f;WAN2.2文生视频开源镜像&#xff0c;结合了强大的ComfyUI界面和SDXL Prompt Styler风格化工具&#xff0c;让这个过程变得直观又简单。…...

如何自学使用关键字排名软件_关键字排名软件与SEO有什么关系

如何自学使用关键字排名软件_关键字排名软件与SEO有什么关系 在当今数字化时代&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;已成为每一个网站运营者必不可少的技能。其中&#xff0c;关键字排名软件扮演了极其重要的角色。如何自学使用关键字排名软件呢&#xff1f;关…...

新手避坑指南:用Altium Designer打开嘉立创PCB文件,这3个设置不改布线全乱

Altium Designer导入嘉立创PCB文件的三大核心设置解析 刚接触硬件设计的新手工程师们&#xff0c;当你们第一次尝试用Altium Designer打开从嘉立创EDA导出的PCB文件时&#xff0c;是否遇到过这样的场景&#xff1a;板框莫名其妙错位、网络连接全部丢失、设计规则一片混乱&#…...

嵌入式Linux C++开发框架AppKit实战解析

1. 嵌入式Linux C开发框架AppKit深度解析在嵌入式Linux开发领域&#xff0c;C开发者经常面临一个尴尬局面&#xff1a;标准库功能有限&#xff0c;而ROS等框架又过于庞大。AppKit框架正是为解决这一痛点而生&#xff0c;它提供了恰到好处的中间层抽象。我在多个工业控制项目中实…...

视频防抖新范式:从陀螺仪数据到稳定画面的技术革命——影像创作者的开源解决方案

视频防抖新范式&#xff1a;从陀螺仪数据到稳定画面的技术革命——影像创作者的开源解决方案 【免费下载链接】gyroflow Video stabilization using gyroscope data 项目地址: https://gitcode.com/GitHub_Trending/gy/gyroflow 一、技术原理解析&#xff1a;GyroFlow如…...

避开原子操作坑!Keil AC5移植LwRB 3.0.0的保姆级避坑指南

避开原子操作坑&#xff01;Keil AC5移植LwRB 3.0.0的保姆级避坑指南 在嵌入式开发中&#xff0c;环形缓冲区&#xff08;Ring Buffer&#xff09;是一种常见的数据结构&#xff0c;广泛应用于串口通信、DMA传输等场景。LwRB&#xff08;Lightweight Ring Buffer&#xff09;作…...

Performance-Fish:环世界性能优化的全方位解决方案

Performance-Fish&#xff1a;环世界性能优化的全方位解决方案 【免费下载链接】Performance-Fish Performance Mod for RimWorld 项目地址: https://gitcode.com/gh_mirrors/pe/Performance-Fish 问题诊断&#xff1a;环世界性能瓶颈深度剖析 &#x1f50d; AI决策系统…...

即插即用系列 | TGRS 2026 | CGTA:曲率引导标记注意力!线性复杂度全局建模,几何结构保真与长程关联双突破 | 代码分享

0. 前言 本文介绍了CGTA曲率引导标记注意力模块&#xff0c;其通过曲率感知的标记选择策略与全局稀疏注意力机制&#xff0c;首次在遥感图像超分辨率领域实现对细长曲线结构与重复纹理的高保真重建&#xff0c;有效破解了传统注意力机制在处理曲线拓扑时容易产生锯齿边缘与结构…...

如何5分钟从IntelliJ IDEA无缝切换到VSCode:终极快捷键迁移指南

如何5分钟从IntelliJ IDEA无缝切换到VSCode&#xff1a;终极快捷键迁移指南 【免费下载链接】vscode-intellij-idea-keybindings Port of IntelliJ IDEA key bindings for VS Code. 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-intellij-idea-keybindings 你是…...