10.2.5 【Linux】变量的有效范围

简介: 10.2.5 【Linux】变量的有效范围

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


当启动一个 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) 变量类型

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
8月前
|
Shell Linux
|
3月前
|
安全 Linux
Linux线程(十一)线程互斥锁-条件变量详解
Linux线程(十一)线程互斥锁-条件变量详解
|
6月前
|
Java Linux
linux 对子用户配置java 环境变量
linux 对子用户配置java 环境变量
53 3
|
5月前
|
Linux Shell
在Linux中,如何将二进制文件添加到 $PATH 变量中?
在Linux中,如何将二进制文件添加到 $PATH 变量中?
|
8月前
|
Shell Linux Perl
Linux|如何允许 awk 使用 Shell 变量
Linux|如何允许 awk 使用 Shell 变量
102 2
|
6月前
|
安全 算法 Linux
【Linux】线程安全——补充|互斥、锁|同步、条件变量(下)
【Linux】线程安全——补充|互斥、锁|同步、条件变量(下)
58 0
|
6月前
|
存储 安全 Linux
【Linux】线程安全——补充|互斥、锁|同步、条件变量(上)
【Linux】线程安全——补充|互斥、锁|同步、条件变量(上)
64 0
|
8月前
|
Linux Perl
Linux|了解如何使用 awk 内置变量
Linux|了解如何使用 awk 内置变量
48 1
|
6月前
|
Shell Linux
Linux环境变量之shell中export定义全局变量和echo 变量的区别
Linux环境变量之shell中export定义全局变量和echo 变量的区别
|
8月前
|
存储 Linux Shell
Linux|Awk 变量、数字表达式和赋值运算符
Linux|Awk 变量、数字表达式和赋值运算符
109 2

热门文章

最新文章