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

Linux shell编程学习笔记7:只读变量

在编程过程中,我们经常会使用到一些常量,也就是值不需要改变的变量,在许多编程语言提供了常量的定义方式,比如c/c++的define MAXNUM 99999 或 const int  a = 7,javasccipt的const a=7, 等等。

跟以上这些方法不同,在Linux shell编程中,Linux提供了readonly命令用来定义一到多个变量并设置只读属性。所以我们这个内容单独拿出来学习。

一、readonly命令的功能

readonly命令主要功能有五个:

(一)定义一到多个变量并设置只读属性,
(二)为已定义的一到多个变量设置只读属性
(三)显示全部包含只读属性的变量
(四)为已定义的一到多个函数设置只读属性
(五)显示全部包含只读属性的函数

二、readonly命令的语法

语法格式: readonly [-aAf] [-p] [name[=value] ...]


常用选项:
-a :指向数组
-A :指向关联数组
-p :显示全部只读变量
-f  :指向函数

常用参数:

name(可选):变量名或函数名
value(可选):变量的值

返回值:
readonly返回true除非你提供了非法选项或非法名称。

其中的选项来源如下,方便大家记忆:

-a:array

-A:Associative Array

-p:print

-f:function

三、使用说明

(一)单独执行 readonly 或使用选项 -p 可以输出显示系统中所有已定义的只读变量和函数。

(二)unset命令不能删除只读变量。
 

四、实例

user@host :~ $ readonly var1="test"
user@host :~ $ echo $var1
test
user@host : ~ $ var1="newvalue"
-sh: var1 : is read only
user@host : ~ $ readonly -n var1
user@host : ~ $ readonly
readonly var1=‘test’
user@host : ~ $ unset var1
-sh: unset : var1: is read only
user@host : ~ $

 在上面的例子中,我们首先用命令readonly var1="test" 定义了变量var1,初始化其值为"test",并设置了只读属性,

然后用命令echo $var1显示其值

接着我们尝试命令var1="newvalue",想给var1设置新的值,但是没有成功,系统提示-sh: var1 : is read only

接着我们尝试命令readonly -n var1来取消var1的只读属性。在上面readonly命令语法中是没有-n这个选项的,但我在网上看到有网友说 readonly命令还包括 -n 选项:

 An argument of `-n' says to remove the readonly property   from subsequent NAMEs.

于是尝试了一下,至少在sh中,readonly -n不能取消只读属性。

接着我们使用命令readonly查看当前具有只读属性的变量,结果只有一个:readonly var1= test

最后我们尝试命令unset var1来删除变量var1,但没有成功:-sh: unset : var1: is read only

关于如何删除具有只读属性的变量,我还尝试了网友在网上给出的另一种方法:

user@host :~ $ cat << EOF|gdb
>attach $$
>call unbind_variable("var1")
>detach
>EOF
-sh: gdb: not found
user@host :~ $ cat << EOF
>attach $$
>call unbind_variable("var1")
>detach
>EOF
attach 640
call unbind_variable("var1")
detach
user@host :~ $ readonly
readonly var1='test'
user@host :~ $ 

网友给的方法中要调用 gdb,但在sh中找不到gdb。

不使用gdb,则不能删除具有只读属性的变量var1。

                

相关文章:

Linux shell编程学习笔记7:只读变量

在编程过程中&#xff0c;我们经常会使用到一些常量&#xff0c;也就是值不需要改变的变量&#xff0c;在许多编程语言提供了常量的定义方式&#xff0c;比如c/c的define MAXNUM 99999 或 const int a 7&#xff0c;javasccipt的const a7&#xff0c; 等等。 跟以上这些方法…...

Scala第十七章节

Scala第十七章节 scala总目录 文档资料下载 章节目标 了解集合的相关概念掌握Traversable集合的用法掌握随机学生序列案例 1. 集合 1.1 概述 但凡了解过编程的人都知道程序 算法 数据结构这句话, 它是由著名的瑞士计算机科学家尼古拉斯沃斯提出来的, 而他也是1984年图灵…...

BGP高级特性——4字节AS号

目录 4字节AS号 相关概念 两种过渡属性 4字节AS号的格式 4字节AS号建立邻居 4字节AS号路由传递 配置命令 4字节AS号 相比于2字节AS号&#xff0c;范围更大。由1~65535扩展到1~4294967295 支持4字节AS号的BGP设备兼容仅支持2字节AS号的BGP设备 相关概念 Speaker&#…...

cesium源码无法更新的解决方案

一、环境&#xff1a; 中国移动的宽带 win10操作系统 二、问题复现步骤&#xff1a; 1、开了VPN&#xff0c;设置为全局代理 2、在vscode中执行git pull命令 3、结果显示无法更新 三、解决方案&#xff1a; 1、安装Github官方开发的软件Github Desktop 下载地址&#xf…...

大数据-玩转数据-双流JOIN

一、双流JOIN 在Flink中, 支持两种方式的流的Join: Window Join和Interval Join 二、Window Join 窗口join会join具有相同的key并且处于同一个窗口中的两个流的元素. 注意: 1.所有的窗口join都是 inner join, 意味着a流中的元素如果在b流中没有对应的, 则a流中这个元素就不会…...

from PIL import Image,文字成图,ImageFont import jieba分词,input优雅python绘制图片

开始的代码 import os from PIL import Image, ImageDraw, ImageFont import jiebadef generate_image_with_white_bg(text, font_path, output_path):# 设置图片大小和背景颜色image_width 800image_height 600bg_color (255, 255, 255) # 白色# 创建图片对象image Imag…...

渗透测试信息收集方法笔记

一、指纹识别 1、钟馗之眼https://www.zoomeye.org/ 2、天眼查https://www.tianyancha.com/ 3、工具&#xff1a;御剑WEB指纹识别系统正式版&#xff0c;可以查网站用了哪些框架&#xff0c;什么版本&#xff0c;有哪些漏洞 4、kali whatweb 二、信息泄露 1、csdn https://www.…...

协议栈——连接服务器

如对方的ip和port配置信息&#xff0c;这里的连接是指通信前的准备工作 上一篇介绍查看套接字的命令时&#xff0c;可以看到很多信息&#xff0c;但是刚刚创建出来的套接字是什么信息都没有的&#xff0c;协议栈也因此不知道和谁通信&#xff1b; 客户端填补信息 这一步中调…...

数据结构--队列与循环队列的实现

数据结构–队列的实现 1.队列的定义 比如有一个人叫做张三,这天他要去医院看病,看病时就需要先挂号,由于他来的比较晚,所以他的号码就比较大,来的比较早的号码就比较小,需要到就诊窗口从小号到大依次排队,前面的小号就诊结束之后,才会轮到大号来,小号每就诊完毕就销毁,每新来…...

数据结构—栈、队列、链表

一、栈 Stack&#xff08;存取O(1)&#xff09; 先进后出&#xff0c;进去123&#xff0c;出来321。 基于数组&#xff1a;最后一位为栈尾&#xff0c;用于取操作。 基于链表&#xff1a;第一位为栈尾&#xff0c;用于取操作。 1.1、数组栈 /*** 基于数组实现的顺序栈&#…...

2023年4月到7月工作经历

2023年4 有同事说程序崩溃一起分析得结果 unsigned uNum 2; std::string str "abc" uNum; std::cout << str; 结果是c 。如果uNum 很大的话&#xff0c;就可能崩溃。 unsigned uNum 2; //std::string str "abc" uN…...

嵌入式Linux应用开发-驱动大全-同步与互斥③

嵌入式Linux应用开发-驱动大全-同步与互斥③ 第一章 同步与互斥③1.4 Linux锁的介绍与使用1.4.1 锁的类型1.4.1.1 自旋锁1.4.1.2 睡眠锁 1.4.2 锁的内核函数1.4.2.1 自旋锁1.4.2.2 信号量1.4.2.3 互斥量1.4.2.4 semaphore和 mutex的区别 1.4.3 何时用何种锁1.4.4 内核抢占(pree…...

力扣-383.赎金信

Idea 使用一个hashmap 或者一个int数组存储第二次字符串中每一个字符及其出现的次数 遍历第一个字符串&#xff0c;讲出现的重复字符减1&#xff0c;若该字符次数已经为0&#xff0c;则返回false AC Code class Solution { public:bool canConstruct(string ransomNote, strin…...

计算机网络 第二章物理层

计算机网络第二章知识点速刷 其中重要的是信源和信宿&#xff0c;以及调制解调器在通信模型当中起到的作用。...

uniapp:动态修改页面标题

我们经常遇到这种情况&#xff0c;点击新增按钮&#xff0c;进入一个空白表单页面&#xff0c;点击修改按钮&#xff0c;其实也是进入这个表单页面&#xff0c;只是表单内容已经被数据库的记录反显了&#xff0c;为了区别页面&#xff0c;我们还需要动态设置页面的标题&#xf…...

java学生管理系统

一、项目概述 本学生管理系统旨在提供一个方便的界面&#xff0c;用于学校或机构管理学生信息&#xff0c;包括学生基本信息、课程成绩等。 二、系统架构 系统采用经典的三层架构&#xff0c;包括前端使用JavaSwing&#xff0c;后端采用Java Servlet&#xff0c;数据库使用M…...

Docker和容器化:简介和使用案例

Docker和容器化&#xff1a;简介和使用案例 引言 容器化技术在近年来变得越来越流行&#xff0c;为开发人员和运维团队提供了更加灵活、高效的软件部署和管理方式。其中&#xff0c;Docker是最为知名和广泛使用的容器化平台之一。本篇博客文章将介绍Docker和容器化的基本概念…...

(高阶) Redis 7 第18讲 RedLock 分布式锁

🌹 以下分享 RedLock 分布式锁,如有问题请指教。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有对阁下帮助,请👍点赞💖收藏🐱‍🏍分享😀 问题 分布式锁问题从(高阶) Redis 7 第17讲 分布式锁 实战篇_PJ码匠人的博客-CSDN博客 这篇文章来看,…...

嵌入式软件架构基础设施设计方法

大家好&#xff0c;今天分享一篇嵌入式软件架构设计相关的文章。 软件架构这东西&#xff0c;众说纷纭&#xff0c;各有观点。在我看来&#xff0c;软件架构是软件系统的基本结构&#xff0c;包含其组件、组件之间的关系、组件设计与演进的规则&#xff0c;以及体现这些规则的基…...

MySQL进阶_3.性能分析工具的使用

文章目录 第一节、数据库服务器的优化步骤第二节、查看系统性能参数第三节、 慢查询日志第四节、 查看 SQL 执行成本第五节、 分析查询语句&#xff1a;EXPLAIN5.1 基本语法5.2 EXPLAIN各列作用 第一节、数据库服务器的优化步骤 当我们遇到数据库调优问题的时候&#xff0c;可…...

Scala第十三章节

Scala第十三章节 1. 高阶函数介绍 2. 作为值的函数 3. 匿名函数 4. 柯里化 5. 闭包 6. 控制抽象 7. 案例: 计算器 scala总目录 文档资料下载...

Nginx高级 第一部分:扩容

Nginx高级 第一部分&#xff1a;扩容 通过扩容提升整体吞吐量 1.单机垂直扩容&#xff1a;硬件资源增加 云服务资源增加 整机&#xff1a;IBM、浪潮、DELL、HP等 CPU/主板&#xff1a;更新到主流 网卡&#xff1a;10G/40G网卡 磁盘&#xff1a;SAS(SCSI) HDD&#xff08;机械…...

vue项目上线后去除控制台所有console.log打印-配置说明

方式一 npm i babel-plugin-transform-remove-console --save-dev babel.config.js文件中添加 // 然后在babel.config.js中添加判断 const prodPlugin []if (process.env.NODE_ENV production) { // 如果是生产环境&#xff0c;则自动清理掉打印的日志&#xff0c;但保留…...

《XSS-Labs》02. Level 11~20

XSS-Labs 索引Level-11题解 Level-12题解 Level-13题解 Level-14题解 Level-15题解 Level-16题解 Level-17题解 Level-18~20题解 靶场部署在 VMware - Win7。 靶场地址&#xff1a;https://github.com/do0dl3/xss-labs 只要手动注入恶意 JavaScript 脚本成功&#xff0c;就可以…...

Java中处理千万级数据的最佳实践:性能优化指南

在今天的数字化时代&#xff0c;处理大规模数据已经成为许多Java应用程序的核心任务。无论您是构建数据分析工具、实现实时监控系统&#xff0c;还是处理大规模日志文件&#xff0c;性能优化都是确保应用程序能够高效运行的关键因素。本指南将介绍一系列最佳实践&#xff0c;帮…...

LCR 069.山峰数组的峰顶索引

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;LCR 069. 山脉数组的峰顶索引 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 二分查找即可。 解题代码&#xff1a; class Solution {public int peakIndexInMountainArray(int[] arr) {…...

AtCoder Beginner Contest 233 (A-Ex)

A.根据题意模拟即可 B.根据题意模拟即可 C.直接用map 进行dp即可 D.用前缀和进行模拟&#xff0c;用map统计前缀和&#xff0c;每次计算当前前缀和-k的个数就是以当前点为右端点答案。 E - Σ[k0..10^100]floor(X&#xff0f;10^k) (atcoder.jp) &#xff08;1&#xff09;…...

解决caffe中的python环境安装的问题

由于caffe&#xff08;GitHub - BVLC/caffe: Caffe: a fast open framework for deep learning.&#xff09;使用的python版本是2.7&#xff0c;而非python3&#xff0c;所以安装的时候使用命令&#xff1a;sudo apt install python2.7进行安装。 而在安装python的各种包时&am…...

专业图像处理软件DxO PhotoLab 7 mac中文特点和功能

DxO PhotoLab 7 mac是一款专业的图像处理软件&#xff0c;它为摄影师和摄影爱好者提供了强大而全面的照片处理和编辑功能。 DxO PhotoLab 7 mac软件特点和功能 强大的RAW和JPEG格式处理能力&#xff1a;DxO PhotoLab 7可以处理来自各种相机的RAW格式图像&#xff0c;包括佳能、…...

面试题:Kafka 为什么会丢消息?

文章目录 1、如何知道有消息丢失&#xff1f;2、哪些环节可能丢消息&#xff1f;3、如何确保消息不丢失&#xff1f; 引入 MQ 消息中间件最直接的目的&#xff1a;系统解耦以及流量控制&#xff08;削峰填谷&#xff09; 系统解耦&#xff1a; 上下游系统之间的通信相互依赖&a…...

怎样可以做网站站长/nba排名赛程

1、定时任务的部署&#xff0c;最简单的方法是执行 crontab -e 然后在下面加上世间周期配置和要执行的命令&#xff0c;一般情况下&#xff0c;可以把要执行的任务用bash脚本封装一下&#xff0c;格式如下所示&#xff1a; minute hour day month week command 举例…...

怎么做传奇私服广告网站/站长工具麻豆

关于如何集成spring-data-mongodb到项目中&#xff0c;已经有很多人介绍了&#xff0c;这里只给出几个链接。GETTING STARTED Accessing Data with MongoDB&#xff1a; http://spring.io/guides/gs/accessing-data-mongodb/MongoDB初探(二)----使用spring-data配置mongodb &am…...

为什么不自己做购物网站/赣州seo

2017-08-19 主要内容&#xff1a;CPU和GPU介绍&#xff0c;几种深度学习框架的介绍 1.CPU和GPU CPU一般核数目比较少&#xff0c;适合做通用的计算&#xff0c;速度比较快&#xff0c;共享系统的内存 GPU一般单个核心的速度比较慢&#xff0c;但是核心数目很多&#xff0c;几千…...

自己网站如何做关键词/外贸定制网站建设电话

在常见的业务&#xff0c;应该会遇到实时多边形的绘制&#xff0c;这也算最基本的业务&#xff0c;绘制多边形容易&#xff0c;如何保证其形状正确还是需要注意的&#xff0c;多边形的绘制为了保证图形本身正确&#xff0c;需要进行剖分&#xff0c;剖分算法earcut最为常用&…...

温江做网站公司/班级优化大师下载安装最新版

文章目录问题描述解题报告实现代码参考资料问题描述 魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树。 小易现在在0号城市,每次行动小易会从当前所在的城市走到与其相邻的一个城市,小易最多能行动L次。 如果小易到达过某个城市就视为小易游历过…...

保定手机网站制作/病毒式营销的案例

HQChart使用教程74-使用快速创建数字币深度图深度图效果图demo例子demo地址代码Option项说明TypeSymbolIsAutoUpdateAutoUpdateFrequencyBorderMaxVolRateCorssCursorInfoHPenTypeVPenTypeIsShowTooltipFrameSplitCountXSplitCountIsShowLeftTextIsShowRightTextXLineTypeYLine…...