指定变量的类型及变量的间接引用

2024-04-02 06:08

本文主要是介绍指定变量的类型及变量的间接引用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

指定变量的类型: 使用declare或者typeset


declare 或者typeset 内建命令(这两个命令是完全一样的)允许指定变量的具体类型.

declare/typeset选项

-r 只读


declare -r var1   
# 与readonly var1是一样的.

-i 整型


declare -i number
# 脚本会把变量"number"按照整形进行处理.number=3
echo "Number = $number"        # number = 3number=three
echo "Number = $number"        # number = 0# 脚本尝试把字符串"three"作为整数来求值(失败,所以出现值为0).

 如果把一个变量指定为整型的话, 那么即使没有expr或者let命令, 也允许使用特定的算术运算.


n=6/3
echo "n = $n"          # n = 6/3declare -i n
n=6/3
echo "n = $n"          # n = 2

-a 数组


declare -a indices      
# 变量indices将被视为数组.

-f 函数


declare -f
# 如果在脚本中使用declare -f, 而不加任何参数的话,那么将会列出这个脚本之前定义的所有的函数.
declare -f function_name
# 如果在脚本中使用declare -f function_name这种形式的话,将只会列出这个函数的名字.

-x export


declare -x var1
# 这句将会声明一个变量,并作为这个脚本的环境变量被导出.

-x var=$value


declare -x var=123
# declare命令允许声明变量类型的同时给变量赋值.

 *使用declare内建命令可以限制变量的作用域.


foo () {FOO="bar"
}
bar () {fooecho $FOO
}
bar                 # 打印barfoo () {declare FOO="bar"
}
bar () {fooecho $FOO
}
bar                 #什么都不打印.

变量的间接引用


假设一个变量的值是第二个变量的名字. 那么如何从第一个变量中取得第二个变量的值呢? 比如,如果 a=letter_of_alphabet 并且 letter_of_alphabet=z , 那么我们能够通过引用变量 a 来获得 z 么? 这确实是可以做到的, 它被称为间接引用. 它使用 eval var1=$$var2 这种不平常的形式.


变量的间接引用给Bash添加了一种类似于 C 语言指针的功能.


#!/bin/bash
# 间接变量引用.a=letter_of_alphabet    # 变量"a"的值是另一个变量的名字.
letter_of_alphabet=zecho# 直接引用
echo "a = $a"          # a = letter_of_alphabet# 间接引用
eval a=\$$a
echo "Now a = $a"      # Now a = zexit 0

Bash并不支持指针运算操作, 因此这极大的限制了间接引用的使用.


这篇关于指定变量的类型及变量的间接引用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869172

相关文章

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

Python实现合并与拆分多个PDF文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh

Python如何查看数据的类型

《Python如何查看数据的类型》:本文主要介绍Python如何查看数据的类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python查看数据的类型1. 使用 type()2. 使用 isinstance()3. 检查对象的 __class__ 属性4.

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D

Flask解决指定端口无法生效问题

《Flask解决指定端口无法生效问题》文章讲述了在使用PyCharm开发Flask应用时,启动地址与手动指定的IP端口不一致的问题,通过修改PyCharm的运行配置,将Flask项目的运行模式从Fla... 目录android问题重现解决方案问题重现手动指定的IP端口是app.run(host='0.0.

Python如何在Word中生成多种不同类型的图表

《Python如何在Word中生成多种不同类型的图表》Word文档中插入图表不仅能直观呈现数据,还能提升文档的可读性和专业性,本文将介绍如何使用Python在Word文档中创建和自定义各种图表,需要的... 目录在Word中创建柱形图在Word中创建条形图在Word中创建折线图在Word中创建饼图在Word

SpringBoot接收JSON类型的参数方式

《SpringBoot接收JSON类型的参数方式》:本文主要介绍SpringBoot接收JSON类型的参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、jsON二、代码准备三、Apifox操作总结一、JSON在学习前端技术时,我们有讲到过JSON,而在

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相