想给一个整数变量赋予文本值,实际上是赋予0使用+ 代替-,可以颠倒选项的含义。
如果没有使用参数,则declare显示当前已定义变量和函数的列表。让我们关注一下-r选项:
$ declare –r title=" paradise Lost"
$ title = " Xenogenesis"
bash: title: read-only variable
$ declare title= " Xenogenesis"
$ echo $title
Xecogenesis
$ typeset title = " The Longing Ring”
$ echo $title
The Longing Ring
这个示例表明,只有declare或typeset命令可以修改只读变量的值。
export命令
语法:export [options] [name [= value]]
摘要:用于创建传给子Shell的变量。
export命令使用四个选项:
-- 表明选项结束。所有后续参数都是实参
-f 表明在“名-值”对中的名字是函数名
-n 把全局变量转换成局部变量。换句话说,命名的变量不再传给子Shell
-p 显示全局变量列表
如果没有用参数,则假定是一个-p参数,并且显示出全局变量的列表:
$ export
declare –x ENV = "/home/medined/ . bashrc"
declare –x HISTFILESIZE = "1000"
…
declare –xi numPages = "314"
declare –xr title = "The Longing Ring"
declare –xri numChapters = "32"
这种显示的一个有趣的特性是,它告诉我们哪些变量只能是整数、是只读的,或者二者皆可。
let命令
语法:let expression
摘要:用于求整数表达式的值。
let命令计算整数表达式的值。它通常用来增加计数器变量的值,如例5-9所示。
例5-9 let——使用let命令
# ! /bin/bash
count=1
for element in $@
do
echo " $element is element $count"
let count+=1
done
下面是这个脚本运行结果示例:
$ chmod + x let
$ . /let one two three
one is element 1
two is element 2
three is element 3
注意:如果我们习惯在表达式中使用空格,那么要用双引号把表达式括起来,如:
let "count + =1"
否则会导致语句错误。
local 命令
语法:local [name [= value]]
摘要:用于创建不能传给子Shell的变量。这个命令仅在过程内部有效。
简单说来,local命令创建的变量不能被子Shell存取。因此,只能在函数内部使用local命令。我们可以在命令行或脚本中使用“变量=值”这种形式的赋值命令。如果使用local时不带实参,那么当前已定义的局部变量列表就送往标准输出显示。
readonly命令
语法:readonly [options] [name[ = value]]
摘要:用于显示或者设置只读变量。
Readonly命令使用两个选项:
-- 表明选项结束。所有后续参数都是实参
-f 创建只读函数
如果没有用参数,则readonly显示当前已定义的只读变量和函数的列表。
set命令
语法:set [--abefhkmnptuvxidCHP] [-o option] [name [= value]]
摘要:用于设置或者重置各种Shell选项。
set 命令可实现很多不同的功能——并非其中所有的功能都与变量有关。由于本节的其他命令重复了通过set命令可用的那些变量选项,所以这里对set命令不做详细说明。
shift命令
语法:shift [n]
摘要:用于移动位置变量。
shift命令调整位置变量,使$3的值赋予$2,而$2的值赋予$1。当执行shift命令时,这种波动作用影响到所定义的各个位置变量。往往使用shift命令来检查过程参数的特定值——如为选项设置标志变量时。
typeset命令
语法:typeset [options] [name [= value]]
摘要:用于显示或者设置变量。
typeset 命令是declare命令的同义词。
unset命令
语法:unset [options] name [name …]
摘要:用于取消变量定义。
unset命令使用两个选项:
-- 表明选项结束,所有后续参数都是实参
-f 创建只读函数
unset命令从Shell环境中删除指定的变量和函数。注意,不能取消对PATH、IFS、PPID、PS1、PS2、UID和EUID的设置。如果我们取消RANDOM、SECONDS、LINENO或HISTCMD等变量的设置,它们就失去特有属性。
注:原文shell链接 http://www.cnblogs.com/chen-lhx/p/5743438.html
注:系统学习链接 http://shellbaike.com/