shell脚本脚本变量

shell脚本的概念:

1.讲要执行的命令按顺序保存到一个文本文件

2.给文件可执行权限

3.可以结合各种shell控制语句以完成更复杂的操作

linux中包含shell的文件有

[root@localhost ~]# cat /etc/shells
/bin/sh            #UNIX最初使用的 shell,已经被bash所替换。
/bin/bash            #基准于GNU的框架下发展出的Shell,是 sh 的扩展
/usr/bin/sh            
/usr/bin/bash
/bin/tcsh            #整合了csh,提供更多的功能
/bin/csh            #语法有点类似于c语言的Shell

注意:nologin是一个奇怪的shell 这个shell可以让用户无法登录

shell格式:

使用vim编译创建xxx以.sh为结尾

脚本的第一行声明脚本解释器用#!

第二行可以用”#“来写入注释信息

后面执行代码依次排序

执行脚本shell:

chmod 给这个文件权限         也可以用bash+文件即可运行        #bash可以有无执行权限

用chmod的这个 要用绝对路径或者相对路径来运行        #要有执行权限

以上两种脚本都是在子shell环境中执行脚本

siure或”.“指定脚本文件运行        #可无执行权限

编译型代码语言:c        c++         java        go都是编译型语言 代码文件需要先进行编译才能执行

解释性语言:shell        python        代码是边解释边运行

交互式硬件设备

标准输入:从该设备接收用户输入的数据

标准输出::通过设备向用户输出数据

标准错误:通过该设备报告执行出错信息

重定向操作

变量:

变量名以字母或者下划线开头

代码:变量=变量值

查看变量值:echo ¥变量

read -p (”提示内容“)变量名

赋值时使用引号:

双引号:允许通过¥符号引用其他变量值

单引号 :会把¥看作为一个普通字符,不会引用变量的值

反撇号:命令替换提取命令结构

设置变量的作用范围

格式:1.export 变量名

让自定义的变量在所有shell环境中有效的方法:

1.在/etc/bashre 文件中 定义变量名=变量值

2.在        /etc/profile 文件中定义        export 变量名=变量值        并source /etc/profile 立即生效

整数运算

let a=10 +5 

let a++         相当于        a=$[a+1]

let a--               相当于        a=$[a-10]

let a+2=        相当于        a=$[a+2]

浮点数运算

echo ‘4.5+2.1’  | bc

awk “BEGIN[PRINT 4.5+2.1]'

环境变量:

env        #查看当前shell环境中可用的环境变量

PATH USER PWD HOMS LANG HTSTSIZE        定义在/etc/profile 中针对于所有用户

家目录~/.base_profile

只读变量

readonly 变量名=变量值

位置变量:

./rest.sh        one        tow        three        .......        the

                        $1        $2        $3                                $10

当数字超过10的时候输出显示就变成noe1了 所以我们要添加大括号

预定变量:

$0        表示脚本本身

$#        代表脚本后面跟的位置参数的数量

$?        表示时上一条Linux命令执行的返回状态码(0-255) 0表示上一条命令执行正确  非0时则为异常

$*        默认代表篇脚本后跟所有参数 加上双引号后“$*”会把所有参数看作一个整体

$@        默认代表篇脚本后跟所有参数 加上双引号后“$*”会把所有参数看作一个体

date

%y        表示年

%m       表示月

%d        表示日

date -d “1 day” + “%y%m%d”        表示昨天日期

date +“%y%m01"        表示当月第一天

date -d "1 month" +"%Y%m01"   下个月第一天
date -d "$(date -d "1 month" +"%Y%m01") -1 day" +"%Y%m%d"       当月最后一天  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3017260.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Type-C转音频(USB2.0数据传输)+PD充电芯片乐得瑞LDR6500/LDR6023

LDR6500 USB-C DRP 接口 USB PD 通信芯片概述 Type-C转音频(USB2.0数据传输)PD充电芯片乐得瑞LDR6500LDR6500是乐得瑞科技针对USB Type-C标准中的Bridge设备而开发的USB-C DRP(Dual Role Port,双角色端口)接口USB PD(Power Deliv…

选择适用的无尘棉签:保障洁净生产环境下的高效擦拭

随着洁净生产条件的日益普及和无尘级别要求的提高,无尘擦拭用品成为广大用户追捧的必备工具。在这个领域,无尘棉签作为一种高效的擦拭工具,扮演着重要的角色。然而,面对市场上种类繁多的无尘棉签,如何选择最合适的产品…

【FL常用插件#1】Ozone11臭氧的安装和使用

本文内容收集自互联网,仅供个人学习参考使用,不允许用于商业用途,造成的侵权行为与本文作者无关 安装 VST2、VST3、AAX和NKS是音频技术界常见的几种插件格式,它们在功能和兼容性上有所不同: VST2 (Virtual Studio Tec…

46. UE5 RPG 实现角色死亡效果

在上一篇文章中,我们实现了敌人受到攻击后会播放受击动画,并且还给角色设置了受击标签。并在角色受击时,在角色身上挂上受击标签,在c里,如果挂载了此标签,速度将降为0 。 受击有了,接下来我们将…

element-plus el-time-picker 时间段选择(可多选)

实现一个如图的时间段选择器 处理好时间回显逻辑&#xff0c;组件内[‘’,‘’],后端数据[{startTime:‘’,endTime:‘’}]处理好加和减的显示逻辑 <template><div><div v-for"(item, index) in currentChoose" :key"index" class"fl…

STM32G0存储器和总线架构

文章目录 前言一、系统架构二、存储器构成三、存储器地址映射四、存储器边界地址五、外设寄存器边界地址 前言 此文章是STM32G0 MCU的学习记录&#xff0c;并非权威&#xff0c;请谨慎参考。 STM32G0主流微控制器基于工作频率可达64 MHz的高性能Arm Cortex-M0 32位RISC内核。该…

Day_2

1. 菜品管理 新增菜品 接口设计 1. 根据类型查询分类&#xff08;分类管理已完成&#xff09; 查看接口文档即可 2. 文件上传 创建Bucket 采用的是阿里云的OSS对象存储服务 新增AccessKey 3. 菜品的新增逻辑 代码开发 1. 文件上传接口开发 为了提高代码的解耦性&#…

【强训笔记】day11

NO.1 思路&#xff1a;枚举&#xff0c;设一号大礼包的数量为x&#xff0c;二号大礼包的数量为y&#xff0c;用循环枚举一号大礼包的个数得到二号大礼包的数量&#xff0c;使得某一时刻axby的值最大。 代码实现&#xff1a; #include<iostream>using namespace std;lo…

昂科烧录器支持Infineon英飞凌的三相电机驱动器TLE9877QXA40

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表&#xff0c;其中Infineon英飞凌的三相电机驱动器TLE9877QXA40已经被昂科的通用烧录平台AP8000所支持。 TLE9877QXA40是一款单芯片三相电机驱动器&#xff0c;集成了行业标准的ARMCortex™M3 内…

如何去官网下载windows10操作系统iso镜像

文章目录 一、先从微软中国官网https://www.microsoft.com/zh-cn/进去二、然后按图示一步步点进去三、点击下载工具这个工具会帮你生成windows操作系统iso文件四、下载好后一步步按图示要求成功操作一、先从微软中国官网https://www.microsoft.com/zh-cn/进去 二、然后按图示一…

HackMyVM-Animetronic

目录 信息收集 arp nmap nikto whatweb WEB web信息收集 feroxbuster steghide exiftool hydra ssh连接 提权 系统信息收集 socat提权 信息收集 arp ┌──(root㉿0x00)-[~/HackMyVM] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 08:00:27:9d:6d:7…

代码随想录第52天|300.最长递增子序列 718. 最长重复子数组

300.最长递增子序列 300. 最长递增子序列 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 动态规划之子序列问题&#xff0c;元素不连续&#xff01;| LeetCode&#xff1a;300.最长递增子序列_哔哩哔哩_bilibili 给你一个整数数组 nums &#xff0…

学习软考----数据库系统工程师25

关系规范化 1NF&#xff08;第一范式&#xff09; 2NF&#xff08;第二范式&#xff09; 3NF&#xff08;第三范式&#xff09; BCNF&#xff08;巴克斯范式&#xff09; 4NF&#xff08;第四范式&#xff09; 总结

KUKA机器人故障报警信息处理(一)

1、KSS00276 机器人参数不等于机器人类型 ①登录专家模式 ②示教器操作&#xff1a;【菜单】—【显示】—【变量】—【单个】 ③名称输入&#xff1a;$ROBTRAFO[] 新值&#xff1a;TRAFONAME[] ④点击【设定值】。 2、电池报警&#xff1a; ①“充电电池警告-发现老化的蓄电池…

TriCore TC162 Archievture Volume 笔记

说明 本文是 英飞凌 架构文档 TriCore TC162P core archiecture Volume 1 of 2 (infineon.com) 的文笔&#xff0c;稍作整理方便查阅&#xff0c;错误之处&#xff0c;还请指正&#xff0c;谢谢 :) 1. Architecture 2. General Purpose & System Register 名词列表&#…

Redis学习(十)|使用消息队列的重试机制实现 MySQL 和 Redis 的数据一致性

文章目录 介绍原理整体方案实现步骤示例代码总结其他&#xff1a;Kafka 重试策略配置1. 生产者重试策略配置2. 消费者重试策略配置 介绍 在分布式系统中&#xff0c;保持 MySQL 和 Redis 之间的数据一致性是至关重要的。为了确保数据的一致性&#xff0c;我们通常采取先更新数…

Elasticsearch:使用 MongoDB connector 同步数据到 Elasticsearch

MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的。Elasticsearch 是一个高效强…

TCP经典异常问题探讨与解决

作者&#xff1a;kernelxing TCP的经典异常问题无非就是丢包和连接中断&#xff0c;在这里我打算与各位聊一聊TCP的RST到底是什么&#xff1f;现网中的RST问题有哪些模样&#xff1f;我们如何去应对、解决&#xff1f;本文将从RST原理、排查手段、现网痛难点案例三个板块自上而…

【容器】Pod 生命周期

概述 Pod的生命周期包含从Pod创建事件的触发到Pod被停止的整个流程。了解Pod的生命周期方便日常排障&#xff0c;并能帮助较深入了解K8s。 在Pod生命周期中有两个重要的标识&#xff1a;Pod Condition 和 Pod Phase。Pod Phase提供了一个Pod当前状况的概览&#xff0c;可以帮…

Unity EventSystem入门

概述 相信在学习Unity中&#xff0c;一定有被UI事件困扰的时候把&#xff0c;当添加UICanvas的时候&#xff0c;Unity会为我们自动添加EventSystem&#xff0c;这个是为什么呢&#xff0c;Unity的UI事件是如何处理的呢&#xff0c;在使用各个UI组件的时候&#xff0c;一定有不…