shell:简单易明白的变量和引用

news/2024/5/19 20:20:29/文章来源:https://blog.csdn.net/fuyuo/article/details/129734142

目录

  • 什么是变量
  • shell的变量类型
    • declare定义变量的类型
    • 根据数据类型分类
    • 根据作用域分类
  • 变量的定义
  • shell 中的引用

什么是变量

可以变化的量。本质上讲,变量就是在程序中保存用户数据的一块内存空间,而变量名就是这块内存空间的地址。

shell的变量类型

shell 是一种动态类型语言和弱类型语言,即在Shell中,数据类型不需要声明。
如c语言就是强数据类型,需要声明类型:int i = 1;
python语言为弱数据类型语言:i = 1

declare定义变量的类型

根据数据类型分类

注:declare命令还可输出所有的变量、函数、整数和已经导出的变量

declare 的参数大概解释

+/-  "-"可用来指定变量的属性,"+"则是取消变量所设的属性-p:显示所有变量的值-i:将变量定义为整数-r:将变量声明为只读变量。只读变量不允许修改和删除-a:变量声明为数组变量。但这没有必要,所有变量都不必显示定义就可以用作数组。-f:显示所有自定义函数,包括名称和函数体。-x:将变量设置成环境变量。可使用+x将变量变成非环境变量

根据作用域分类

根据作用域可将变量分为环境变量(全局变量)和普通变量(局部变量)

一、环境变量
可以在创建它们的shell及其派生出来的任意子进程shell中使用(su - 切换用户会读取新的环境变量),环境变量又可分为自定义环境变量和bash内置的环境变量

(1)自定义环境变量
一般是指用export内置命令导出的变量,用于定义shell的运行环境,保证shell命令的正
确执行。环境变量可以在命令行中设置和创建,但用户退出命令行时这些变量值就会丢失,
即该环境变量只在当前shell和子shell中有效。如果希望永久保存环境变量,可以在配置文件
中设置。
①用户的环境变量配置: /.bash_profile或~/.bashrc

②全局环境变量的配置:/etc/bashrc、/etc/profile文件或者/etc/profile.d目录中定义。

(2)bash内置的环境变量
shell内置的环境变量是所有的shell程序都可以使用的变量。shell程序在运行时,都会接
收一组变量来确定登录用户名、命令路径、终端类型、登录目录等,这组变量就是环境变量。
环境变量会影响到所有的脚本的执行结果。

在这里插入图片描述

变量的定义

1,普通变量定义
变量名=变量值
注意:“=”前后不能有空格

引用变量:$变量名 或者${变量名}查看变量:echo $变量名,set(可查看所有变量:包括自定义变量和环境变量),env显示全
局变量,declare输出所有的变量、函数、整数和已经导出的变量。
取消变量:unset 变量名

当然定义变量这样的作用范围是:仅在当前shell中有效,可使用export指令将变量转换成环境变量

2、位置参数和预定义变量

许多情况下,Shell脚本都需要接收用户的输入,根据用户输入的参数来执行不同的操作。
从命令行传递给Shell脚本的参数又称为位置参数,Shell脚本会根据参数的位置使用不同的位
置参数变量读取它们的值。

在这里插入图片描述
创建一个shell文件 testshell.sh 在里面写入如下代码:

#!/bin/bash
echo "$#"
echo "$0"
echo "$*"
echo "$@"
echo "$?"
echo "$$"

然后保存退出,执行这个文件,输出如下,最后对照上面的自己看

[root@master ~]# ./testshell.sh 1 2
2
./testshell.sh
1 2
1 2
0
32413

shell 中的引用

1 单引号 ''
如果将字符串放到一对单引号之间,那么字符串中所有字符的特殊含义被忽略2 双引号 “” 
双引号的引用与单引号基本相同,包含在双引号内的大部分特殊字符可以当作普通字符处理,但是仍然有一些特殊字符保留自己的特殊含义,比如”$“和“\”以及“3 反引号 ``
反引号中的字符串将被解释为shell命令

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“先人一步”!从华为P60看手机品牌如何找到新趋势、新玩法、新增量

对大多数人来说,换新手机是一件充满新鲜感的事,新机到手让人兴奋,可更让老蔡这样的科技发烧友们兴奋的是“比别人更快拿上新机”。朋友圈里晒图,一群人向他询问使用体验,总能让他获得一种不错的“尝鲜感”。这种现象&a…

【javaweb】SpringBoot初次体验

工具&#xff1a;idea 创建maven文件 导入依赖&#xff0c;在pom.xml中&#xff08;在spring boot的官方文档找&#xff09; <!-- spring工程中需要继承的父工程 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-b…

F1-F7快恢复二极管 SOD-123 1A 50V~1000V

之前东沃电子&#xff08;DOWOSEMI&#xff09;科普过快恢复二极管ES1A-ES1J&#xff1a;SMA封装、正向平均电流1A、最大反向恢复时间35ns、型号齐全&#xff0c;具体型号有&#xff1a;ES1A、ES1B、ES1C、ES1D、ES1E、ES1G、ES1H、ES1J&#xff0c;所对应的工作峰值反向电压分…

composer详解

一.composer简介什么是ComposerComposer 是 PHP 的一个依赖管理工具&#xff0c;它涉及 "packages" 和 "libraries",简单的说就是我们的项目通常会使用其它代码工具库&#xff0c;这时仅仅是在项目中申明依赖哪些代码工具库&#xff0c;它在每个项目的基础…

基于JavaWeb+jsp实现企业员工工资管理系统

一、项目简介 本项目是一套基于ServletJsp实现的学生成绩管理系统&#xff0c;主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目可以直接作为bishe使用。 项目都经过严格调试&#xff0…

Android开发工程师想找工作需要掌握哪些

前言 目前互联网行业越来越好&#xff0c;进入这个行业的人员也是越来越多。从开发的角度来看&#xff0c;开发的职位主要分前端&#xff0c;后端&#xff0c;客户端&#xff08;主要分为ios和android开发&#xff09;以及算法工程师等。 Android开发一直是当前互联网行业中最…

playwright--pytest-playwright、pytest-base-url插件编写用例

文章目录前言一、安装插件二、编写用例三、运行用例四、内置fixture五、全局配置base_url前言 官方的 pytest-playwright 插件可以编写端到端测试。它提供上下文隔离&#xff0c;开箱即用地在多个浏览器配置上运行。它继承了pytest框架&#xff0c;以及支持playwright的一些基…

【FPGA-DSP】第一期:DSP基础

目录 1. DSP基础 1.1 DSP基本概念 1.2 FPGA实现DSP的特点 2. DSP硬核的结构与使用 3. FPGA设计DSP技术 3.1. 浮点数与定点数的表示与转换 3.1.1. 双精度浮点数表示 3.1.2. 双精度浮点数与定点数的转换 本章作为FPGA数字信号处理的入门介绍课程&#xff0c;将介绍DSP的…

如何在Windows 10中恢复丢失的分区?

一般来说&#xff0c;未分配的空间不能在分区前直接用于存储数据&#xff0c;因此大多数Windows用户会将硬盘划分为不同的分区以存储各种数据。你可以在Windows安装期间或安装完系统后通过硬盘管理、DiskPart命令或第三方工具创建分区。 在分区丢失后&#xff0c;你会…

C的强符号/弱符号

首先上代码和结果&#xff1a; 代码&#xff1a; #include <stdio.h> int k; int k; int main() {printf("addr of k %p\n", &k);printf("value of k %d\n", k);return 0; }结果&#xff1a; addr of k 00408074 value of k 0问题&…

《辉煌优配》消费医疗加速回暖 数字化新竞赛鸣枪

“栽培牙集采将给口腔职业带来深远影响。”瑞尔齿科副总经理胡云帆3月23日承受证券时报记者采访时表明&#xff0c;资料费用下降将惠及公司运营端&#xff0c;同时激活了一大批存量客户。公司相关产品和服务价格已经开端呈现一些变动的迹象。 栽培牙费用包含栽培体费用、牙冠费…

狗都能看懂的VAE笔记

文章目录自编码器普通Auto-Encoder的问题解决的方法如何运作数学细节生成模型Auto-Encoder一直是一个非常有创造性的方向。期中的VAE变分编码器一直是我没搞懂的部分&#xff0c;在AI绘画突然火起来的时候&#xff0c;不得不搞清楚VAE了。看了很多VAE的讲解&#xff0c;没有良好…

The Shebeen——爱尔兰酒吧 NFT 来袭!

从爱尔兰神像到标志性的爱尔兰帽子&#xff0c;The Shebeen——爱尔兰酒吧 NFT 系列是一系列非常吸引的独特数字资产&#xff0c;体现了爱尔兰的精神和风俗。 The Shebeen NFT 系列均来自 The Shebeen——爱尔兰酒吧游戏体验&#xff0c;3 月 17 日至 3 月 29 日可在 The Sandb…

c/c++开发,无可避免的自定义类类型(篇八).为类妥善处理异常

目录 一、异常简述 1.1 异常是什么 1.2 异常处理概念 二、异常处理 2.1 try……catch异常处理语法 2.2 动态异常说明-throw 2.3 标准异常体系 2.4 try ...catch抛出异常对象的处理 2.5 异常捕获处理级别 2.6 抛出对象方式 2.7 try 块以及处理块内严禁跳转语法使用 2.8 异常捕…

【MySQL高级篇】 第8章_索引的创建与设计原则

第8章_索引的创建与设计原则 1. 索引的声明与使用 1.1 索引的分类 MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。 从 功能逻辑 上说&#xff0c;索引主要有 4 种&#xff0c;分别是普通索引、唯一索引、主键索引、全文索引。 按照 物…

Python如何实现读写txt文件?读写txt文件的方法有哪些?

前言 又是一篇纯知识点的文章&#xff0c;现在看文章的人越来越少了&#xff0c;是都去看视频了吗 今天就来聊聊 - Python实现读写txt文件的方法 一、读写模式&#xff1a; w&#xff1a;向文件中写入内容&#xff0c;w会清空原来文本内容a&#xff1a;向文件中追加内容r&am…

sql性能优化:MS-SQL(SQL Server2012)服务器配置选项(sp_configure )对照表

sql性能优化&#xff1a;MS-SQL&#xff08;SQL Server&#xff09;服务器配置选项&#xff08;sp_configure &#xff09;对照表 2019服务器配置选项 (SQL Server) - SQL Server | Microsoft Learn 2012服务器配置选项 | Microsoft Learn 介绍 可以使用 SQL Server Managemen…

什么是蓝牙的核心协议层和产品类型?一文读懂BQB认证中两者的关联

蓝牙核心协议层 什么是蓝牙核心协议层? 所有蓝牙产品必须拥有相应资格才可以进行出售或分发。而蓝牙技术是需通过软件和硬件的 组合实现,分为蓝牙HOST主机(软件)和CONTROLLER控制器(硬件)。 蓝牙核心协议层的规范如何? 目前蓝牙技术分为经典蓝牙(BR/EDR) 和低功耗蓝牙(B…

【vulhub靶场】medium_socnet

文章目录环境搭建信息收集主机发现&#xff1a;端口扫描Web 渗透(CVE-2019-14322)Pallets Werkzeug 0.15.4 路径遍历漏洞代码注入-反弹shell关于Dockerfile判断是否在Docker环境中&#xff1a;Command SHELL 提升至 Meterpreter方法一方法二Docker环境中存在内网环境内网主机探…

二分查找【含左边界查询 + 右边界查询】

789. 数的范围 - AcWing题库 二分查找看起来是很简单的一个算法&#xff0c;但是其中涉及到比较多的细节问题。 一不小心就死循环了…… 使用条件 一般情况下&#xff0c;二分查找通常适用于一个有序的序列中&#xff08;一般为升序&#xff09; 算法解析 确定左右边界 首…