http://blogold.chinaunix.net/u3/93184/showart_1868073.html
查询变量:env,export,set
env 是 environment (环境) 的简写,列出来所有的环境变量。
export 执行后跟env是一样的内容。不过,export 还能将变量转变成环境变量。想要让该变量内容继续的在子程序中使用,那么就请执行:
export 变量
这个东西用在『引用他人的档案或者其它程序』时,相当的重要的。基本上,环境变量可以让子程序继续引用的原因,是因为:
1. 当启动一个 shell ,操作系统分配一记忆区块给 shell 使用,此区域之变量可以让子程序存取;
2. 利用 export 功能,可以让变量的内容写到上述的记忆区块当中(环境变量);
当加载另一个 shell 时 (亦即启动子程序,而离开原本的父程序了),子 shell 3. 可以将父 shell 的环境变量所在的记忆区块导入自己的环境变量区块当中。
set 这个指令除了会将环境变量列出来之外,其它我们的自订变量,都会被列出来。因此,想要观察目前 shell 环境下的所有变量,就用 set 即可!
变量键盘读取、数组与宣告: read, array, declare
read要读取来自键盘输入的变量,就是用 read 这个指令了。这个指令最常被用在 shell script 的撰写当中, 以跟使用者进行对谈。
read [-pt] variable
参数:
-p :后面可以接提示字符!
-t :后面可以接等待的『秒数!』这个比较有趣~不会一直等待使用者啦!
范例一:提示使用者 30 秒内输入自己的大名,将该输入字符串做成 named 变量
[root@linux ~]# read -p "Please keyin your name: " -t 30 named
Please keyin your name: laoi
declare / typeset
declare 或 typeset 是一样的功能,就是在宣告变量的属性。如果使用 declare 后面并没有接任何参数, 那么 bash 就会主动的将所有的变量名称与内容通通叫出来,就好像使用 set 一样啦! 那么 declare 还有什么语法呢?看看先:
[root@linux ~]# declare [-aixr] variable
参数:
-a :将后面的 variable 定义成为数组 (array)
-i :将后面接的 variable 定义成为整数数字 (integer)
-x :用法与 export 一样,就是将后面的 variable 变成环境变量;
-r :将一个 variable 的变量设定成为 readonly ,该变量不可被更改内容,也不能 unset
范例:
范例一:让变量 sum 进行 100+300+50 的加总结果
[root@linux ~]# sum=100+300+50
[root@linux ~]# echo $sum
100+300+50 <==咦!怎么没有帮我计算加总?因为这是文字型态的变量属性啊!
[root@linux ~]# declare -i sum=100+300+50
[root@linux ~]# echo $sum
450
范例二:将 sum 变成环境变量
[root@linux ~]# declare -x sum
范例三:让 sum 变成只读属性,不可更动!
[root@linux ~]# declare -r sum
[root@linux ~]# sum=tesgting
-bash: sum: readonly variable
转载于:https://blog.51cto.com/liubinwei/547365