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

shell编程(2)(3)

目录

一、永久环境变量

按用户设置永久环境变量

文件路径:

示例步骤:

删除永久环境变量

二、脚本程序传递参数怎么实现

三、用编程进行数学运算

shell中利用expr进行运算

运算与变量结合

1. 变量赋值和基本运算

2. 使用expr进行运算

3. 变量拼接

4. 条件判断结合变量


声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章

声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。

一、永久环境变量

按用户设置永久环境变量

将变量写入用户的配置文件,适用于单个用户。

文件路径:
  • Bash 用户:修改 ~/.bashrc~/.bash_profile 文件。

  • Zsh 用户:修改 ~/.zshrc 文件。

  • 通用用户:修改 ~/.profile 文件。

示例步骤:
  1. 打开配置文件:

    bash
    nano ~/.bashrc
  2. 添加环境变量:

    bash
    export VARIABLE_NAME="value"
    export PATH=$PATH:/your/new/path
  3. 保存并退出(在 nano 中,按 Ctrl+O 保存,按 Ctrl+X 退出)。

  4. 让变量立即生效:

    bash
    source ~/.bashrc
删除永久环境变量
  1. 从对应文件中删除变量。

  2. 刷新配置:

    bash复制代码source ~/.bashrc  # 用户级别
    source /etc/profile  # 系统级别

二、脚本程序传递参数怎么实现

echo 执行的文件名是:$0

echo 第一个参数是:$1

echo 传递的参数作为一个字符显示:$*

echo 传递的参数作为每个字符串显示:$@

echo 传递到脚本的参数个数是:$#

echo 最后命令的退出状态:$?

echo 脚本运行的当前进程ID:$$

  1. $0:这个变量代表当前执行的脚本文件的名称。如果脚本是通过链接或者绝对路径执行的,那么它将显示完整的路径;如果是通过相对路径执行的,那么它将显示相对路径。

    echo "执行的文件名是:$0"
  2. $1:这个变量代表传递给脚本的第一个参数。在命令行上调用脚本时,紧跟在脚本名后面的第一个值就是 $1。

    echo "第一个参数是:$1"
  3. $*:这个变量代表传递给脚本的所有参数,它们会被合并成一个单一的字符串。参数之间的分隔符默认是第一个字符(通常是空格)。

    echo "传递的参数作为一个字符显示:$*"
  4. $@:这个变量也代表传递给脚本的所有参数,但每个参数都会被视为独立的字符串。这意味着如果参数中包含空格,它们会被正确地处理。

    echo "传递的参数作为每个字符串显示:$@"
  5. $#:这个变量代表传递给脚本的参数的个数,不包括脚本本身的名称。

    echo "传递到脚本的参数个数是:$#"
  6. $?:这个变量代表上一个执行的命令的退出状态。如果命令成功执行,通常退出状态是 0;如果命令执行失败,退出状态是非 0 的值。

    echo "最后命令的退出状态:$?"
  7. $$:这个变量代表当前脚本运行的进程 ID(PID)。

    echo "脚本运行的当前进程ID:$$"

三、用编程进行数学运算

shell中利用expr进行运算

错误:expr 5+10 会回显 5+10

正确:expr 5 + 10 就会显示15了

以上方法适用于加法减法

乘法:

错误:expr 5 * 10 会报错

正确:expr 5 * 10 就会显示50了 需要使用\进行转义

除法:

正确:expr 10 / 5 会显示2

取余:

正确:expr 10 % 4 会显示2

运算与变量结合

1. 变量赋值和基本运算

#!/bin/bash
​
# 定义变量
a=5
b=10
​
# 进行基本的算术运算
sum=$((a + b))        # 加法
difference=$((a - b))  # 减法
product=$((a * b))    # 乘法
quotient=$((a / b))    # 除法
remainder=$((a % b))   # 取余
​
# 输出结果
echo "Sum: $sum"
echo "Difference: $difference"
echo "Product: $product"
echo "Quotient: $quotient"
echo "Remainder: $remainder"

2. 使用expr进行运算

expr是一个强大的工具,用于在Shell脚本中进行复杂的表达式求值。

#!/bin/bash
​
a=5
b=10
​
# 使用expr进行运算
sum=$(expr $a + $b)
difference=$(expr $a - $b)
product=$(expr $a \* $b)  # 注意乘法需要转义
quotient=$(expr $a / $b)
remainder=$(expr $a % $b)
​
# 输出结果
echo "Sum: $sum"
echo "Difference: $difference"
echo "Product: $product"
echo "Quotient: $quotient"
echo "Remainder: $remainder"

3. 变量拼接

变量拼接是将多个变量或字符串组合成一个单一的字符串。

#!/bin/bash
​
first_name="John"
last_name="Doe"
​
# 变量拼接
full_name="${first_name} ${last_name}"
​
echo "Full Name: $full_name"

4. 条件判断结合变量

条件判断经常与变量结合使用,以控制脚本的流程。

#!/bin/bash
​
num=25
​
if [ $num -gt 20 ]; thenecho "Number is greater than 20"
elseecho "Number is not greater than 20"
fi

相关文章:

shell编程(2)(3)

目录 一、永久环境变量 按用户设置永久环境变量 文件路径: 示例步骤: 删除永久环境变量 二、脚本程序传递参数怎么实现 三、用编程进行数学运算 shell中利用expr进行运算 运算与变量结合 1. 变量赋值和基本运算 2. 使用expr进行运算 3. 变量…...

DFT专家分析scan insertion时使用EDT的策略

作为一名芯片设计DFT工程师专家,在做scan insertion(扫描插入)时使用EDT(Embedded Deterministic Test,嵌入式确定性测试)的参数配置策略,需要综合考虑多个方面的因素,以确保测试的高…...

Apple Vision Pro开发003-PolySpatial2.0新建项目

unity6.0下载链接:Unity 实时开发平台 | 3D、2D、VR 和 AR 引擎 一、新建项目 二、导入开发包 com.unity.polyspatial.visionos 输入版本号 2.0.4 com.unity.polyspatial(单独导入),或者直接安装 三、对应设置 其他的操作与之前的版本相同…...

分公司如何纳税

分公司不进行纳税由总公司汇总纳税“子公司具有法人资格,依法独立承担民事责任;分公司不具有法人资格,其民事责任由公司承担。”企业设立分支机构,使其不具有法人资格,且不实行独立核算,则可由总公司汇总缴纳企业所得税…...

在 Ubuntu 系统上安装 npm 环境以及 nvm(Node Version Manager)

在 Ubuntu 系统上安装 npm 环境以及 nvm(Node Version Manager) 步骤 1: 更新系统包步骤 2: 安装 nvm步骤 3: 安装 Node.js 和 npm步骤 4: 设置默认 Node.js 版本(可选)总结 在 Ubuntu 系统上安装 npm 环境以及 nvm(No…...

深度优先搜索(dfs)题目合集

深度优先搜索(dfs)题目合集 全排列问题 dfs原理和模版深度优先搜索原理(纯个人理解)参考程序dfs通用模版 素数环组合的输出 剪枝新dfs模版参考程序新的dfs模版 自然数的拆分 利用形参进行回溯 全排列问题 dfs原理和模版 P1706 全…...

性能监控利器:Ubuntu 22.04 上的 Zabbix 安装与配置指南

简介 今天我们来聊聊如何在 Ubuntu 22.04 上安装和配置 Zabbix。我们会用到 PostgreSQL 作为数据库后端,Nginx 作为 Web 服务器,并用 Let’s Encrypt SSL 证书来保驾护航。 什么是 Zabbix? Zabbix 是一个开源的网络监控和管理解决方案&…...

性能测试的宏观分析:全面提升系统表现的关键

在当今快速发展的软件行业中,系统性能的优劣直接影响用户体验和业务成功。性能测试作为确保系统高效运行的重要环节,其方法和策略不断演进。其中,宏观分析作为一种全面评估系统性能的手段,日益受到关注。本文将深入探讨宏观分析在…...

ctfshow

1,web21 Basic认证采用Base64加密方式,Base64解码字符串发现是 用户名:密码 的格式进行Base64编码。 密码shark63 2,web22 用 子域名扫描器 扫出flag.ctf.show拿到flag,但这个域名已经没了所以就直接交的官方提供的flag。 3,web23 这段PHP代码是一个简单…...

【分享一个vue指令】鼠标放置提示指令v-tooltip

描述 自定义指令 v-tooltip mounted(el, binding):当元素被挂载到DOM上时,这个钩子会被调用。 el 是指令绑定的元素,binding 包含了指令的值,即 binding.value,这里是 clickOutside 字符串。tooltip 变量用于存储创建…...

掌握 Spring 事务管理:深入理解 @Transactional 注解

在业务方法上使用Transactional开启声明式事务时,很有可能由于使用方式有误,导致事务没有生效。 环境准备 表结构 CREATE TABLE admin (id bigint(20) unsigned NOT NULL AUTO_INCREMENT,username varchar(255) DEFAULT NULL,password varchar(255) …...

字符三角形

字符三角形 C语言代码C语言代码Java语言代码Python语言代码 💐The Begin💐点点关注,收藏不迷路💐 给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。 输入 输入只有一行, …...

【LLM】一文学会SPPO

博客昵称:沈小农学编程 作者简介:一名在读硕士,定期更新相关算法面试题,欢迎关注小弟! PS:哈喽!各位CSDN的uu们,我是你的小弟沈小农,希望我的文章能帮助到你。欢迎大家在…...

如何通过ChatGPT提高自己的编程水平

在编程学习的过程中,开发者往往会遇到各种各样的技术难题和学习瓶颈。传统的学习方法依赖书籍、教程、视频等,但随着技术的不断发展,AI助手的崛起为编程学习带来了全新的机遇。ChatGPT,作为一种强大的自然语言处理工具&#xff0c…...

NVR管理平台EasyNVR多品牌NVR管理工具的流媒体视频融合与汇聚管理方案

随着信息技术的飞速发展,视频监控已经成为现代社会安全管理和业务运营不可或缺的一部分。无论是智慧城市、智能交通、还是大型企业、校园安防,视频监控系统的应用都日益广泛。NVR管理平台EasyNVR,作为功能强大的流媒体服务器软件,…...

python之使用django框架开发web项目

本问将对django框架在python的web项目中的使用进行介绍,有不对之处,烦请指正。 首先使用创建一个django工程(本示例中使用pycharm2024+python3.12),名称和项目保存路径根据自己的需要自行修改,新手直接默认本机环境就好(关于conda将会另开一篇进行讲解。),最后点击cre…...

ChatGPT 桌面版发布了,如何安装?

本章教程教大家如何进行安装。 一、下载安装包 官网地址地址:https://openai.com/chatgpt/desktop/ 支持Windows和MacOS操作系统 二、安装步骤 Windows用户下载之后,会有一个exe安装包,点击运行安装即可。 注意事项,如果Windows操…...

ubuntu 配置 多个 git 客户端 账户

Git配置两个或多个账户 https://blog.csdn.net/mainking2003/article/details/134711865 git 提交 不用输入用户名、密码的方法(GIT免密提交) https://blog.csdn.net/wowocpp/article/details/125797263 git config 用法 https://blog.csdn.net/blueb…...

React Native的界面与交互

React Native (RN) 是一个由 Facebook 开发的开源框架,用于构建跨平台的移动应用程序。它允许开发者使用 JavaScript 和 React 来创建原生 iOS 和 Android 应用。RN 的出现极大地简化了移动应用的开发过程,使得开发者可以更快速、更高效地构建高质量的应…...

autogen+ollama+litellm实现本地部署多代理智能体

autogen 是一个专门为大语言模型 (LLMs) 驱动的自治代理 (autonomous agents) 设计的 Python 库,由 Microsoft 开发和维护。它通过高度模块化和可扩展的架构,支持用户快速构建和运行多代理系统,这些代理可以在没有明确人类干预的情况下协作完成复杂任务。AutoGen 支持以最少…...

python打卡day49

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...