10.2.5 【Linux】变量的有效范围

文章介绍了环境变量如何在父程序和子程序间共享,通过内存区块的机制。read指令用于从键盘读取变量输入,declare或typeset用于声明变量类型,包括默认的字符串类型和整数运算限制。此外,文章还提到了阵列变量及其读取方式。
摘要由CSDN通过智能技术生成

在学理方面,为什么环境变量的数据可以被子程序所引用呢?这是因为内存配置的关系!理论上是这样的:

当启动一个 shell,操作系统会分配一记忆区块给 shell 使用,此内存内之变量可让子程序取用

若在父程序利用 export 功能,可以让自订变量的内容写到上述的记忆区块当中(环境变量);

当载入另一个 shell 时 (亦即启动子程序,而离开原本的父程序了),子 shell 可以将父shell 的环境变量所在的记忆区块导入自己的环境变量区块当中。

通过这样的关系,我们就可以让某些变量在相关的程序之间存在,以帮助自己更方便的操作环境喔! 不过要提醒的是,这个“环境变量”与“bash 的操作环境”意思不太一样,举例来说,PS1 并不是环境变量, 但是这个 PS1 会影响到 bash 的接口。

10.2.6 变量键盘读取、阵列与宣告: read, array, declare

read

要读取来自键盘输入的变量,就是用 read 这个指令了。这个指令最常被用在 shell script 的撰写当中。

read 之后不加任何参数,直接加上变量名称,那么下面就会主动出现一个空白行等待你的输入(如范例一)。 如果加上 -t 后面接秒数,例如上面的范例二,那么 30 秒之内没有任何动作时, 该指令就会自动略过了。

declare / typeset

declare 或 typeset 是一样的功能,就是在“宣告变量的类型”。如果使用 declare 后面并没有接任何参数,那么 bash 就会主动的将所有的变量名称与内容通通叫出来,就好像使用 set 一样啦! 那么 declare 还有什么语法呢?看看先:

由于在默认的情况下面, bash 对于变量有几个基本的定义:

变量类型默认为“字串”,所以若不指定变量类型,则 1+2 为一个“字串”而不是“计算式”。所以上述第一个执行的结果才会出现那个情况的;

bash 环境中的数值运算,默认最多仅能到达整数形态,所以 1/3 结果是 0;

阵列 (array) 变量类型

阵列的变量类型比较有趣的地方在于“读取”,一般来说,建议直接以 ${阵列} 的方式来读取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柯西极限存在准则

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值