一.高级变量用法– 有类型变量
Shell 变量一般是无类型的,但是bash Shell 提供了declare和 typeset 两个命令用于指定变量的类型,两个命令是等价的
declare [ 选项] 变量名
-r 将变量设置为只读属性
-i 将变量定义为整型数
-a 将变量定义为数组
-A 将变量定义为关联数组
-f 显示此脚本前定义过的所有函数名及其内容
-F 仅显示此脚本前定义过的所有函数名
-x 将变量声明为环境变量
-l 将变量值转为小写字母 declare –l var=UPPER
-u 母 将变量值转为大写字母 declare –u var=lower
二.间接变量引用
如果第一个变量的值是第二个变量的名字,从第一个变量引用第二个变量的值就称为间接变量引用
variable1=variable2
variable2=value
variable1 的值是variable2 ,而variable2 又是变量名,variable2 的值为value ,间接变量引用是指通过variable1获得变量值value 的行为间接变量引用
eval tempvar=\$$variable1
例:
[root@lxc ~]# cmd=command
[root@lxc ~]# command=hostname
[root@lxc ~]# eval s=\$$cmd
[root@lxc ~]# echo $s
hostname
[root@lxc ~]#
tempvar=${!variable1}
例:
[root@lxc ~]# cmd=command
[root@lxc ~]# command=hostname
[root@lxc ~]# s=${!cmd}
[root@lxc ~]# echo $s
hostname
[root@lxc ~]#
三.eval 命令
eval 命令将会首先扫描命令行进行所有的置换,然后再执行该命令。该命令适用于那些一次扫描无法实现其功能的变量. 该命令对变量进行两次扫描
例:
[root@lxc ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@lxc ~]# n=6
[root@lxc ~]# eval echo {1..$n}
1 2 3 4 5 6
[root@lxc ~]#
四.创建临时文件
mktemp 命令:创建的临时文件可避免冲突
例:
[root@lxc ~]# mktemp lxc.XXX
lxc.9qa
[root@lxc ~]#
mktemp [OPTION]… [TEMPLATE]
TEMPLATE: filename.XXX
注:X 至少要出现三个
OPTION:
-d:创建临时目录
-p DIR 或–tmpdir=DIR :指明临时文件所存放目录位置
例:
[root@lxc ~]# mktemp -d lxc.XXX
lxc.b8H
[root@lxc ~]# mktemp -p lxc.b8H/ xyh.XXX
lxc.b8H/xyh.CRq
[root@lxc ~]#
五.安装复制文件
install 命令:
install [OPTION]… [-T] SOURCE DEST 单文件
install [OPTION]… SOURCE… DIRECTORY
install [OPTION]… -t DIRECTORY SOURCE…
install [OPTION]… -d DIRECTORY… 创建空目录
选项:
-m MODE ,默认755
-o OWNER
-g GROUP
例:
[root@lxc ~]# install -m 600 -o lxc -g root test.sh /
原创文章,作者:changge,如若转载,请注明出处:http://www.178linux.com/60664