一.高級變量用法– 有類型變量
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.www58058.com/60664