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) 变量类型

相关文章
|
3月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
374 2
|
安全 Linux
Linux线程(十一)线程互斥锁-条件变量详解
Linux线程(十一)线程互斥锁-条件变量详解
|
Java Linux
linux 对子用户配置java 环境变量
linux 对子用户配置java 环境变量
202 3
|
Shell Linux Perl
Linux|如何允许 awk 使用 Shell 变量
Linux|如何允许 awk 使用 Shell 变量
|
Linux Perl
Linux|了解如何使用 awk 内置变量
Linux|了解如何使用 awk 内置变量
|
存储 Linux Shell
Linux|Awk 变量、数字表达式和赋值运算符
Linux|Awk 变量、数字表达式和赋值运算符
|
Linux Shell
在Linux中,如何将二进制文件添加到 $PATH 变量中?
在Linux中,如何将二进制文件添加到 $PATH 变量中?
|
安全 算法 Linux
【Linux】线程安全——补充|互斥、锁|同步、条件变量(下)
【Linux】线程安全——补充|互斥、锁|同步、条件变量(下)
151 0