国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Linux變量
Linux變量 2011-08-29 10:54:51  www.hackbase.com  來源:互聯(lián)網(wǎng)

key words:定義 、命名規(guī)則 、設(shè)置局部變量與全局變量 、讀取變量值、取消與清空變量、變量的有效作用范圍、設(shè)置PATH環(huán)境變量、bash的內(nèi)置命令和內(nèi)置變量、調(diào)整變量的屬性、別名、數(shù)組 一、什么是變量 ...
key words:定義 、命名規(guī)則 、設(shè)置局部變量與全局變量 、讀取變量值、取消與清空變量、變量的有效作用范圍、設(shè)置PATH環(huán)境變量、bash的內(nèi)置命令和內(nèi)置變量、調(diào)整變量的屬性、別名、數(shù)組
 
一、什么是變量
     變量——可以暫時存儲數(shù)據(jù)的地方,程序設(shè)計的基石
    bash shell 沒有所謂的數(shù)據(jù)形態(tài),不會區(qū)分整型、浮點型、字符型等變量,在bash shell中默認只有一種數(shù)據(jù)型態(tài):以字符組成的字符串,bash shell把任何存儲在變量中的值皆視為以字符組成的字符串,除非使用內(nèi)置命令declare特別指定變量形態(tài)
     所以,bash shell的變量不必經(jīng)過事先聲明,想用就用。
例:
[root@localhost ~]# cat bb
i=liting
echo i am $i
echo done
[root@localhost ~]# chmod a+x bb
[root@localhost ~]# ./bb
i am liting
done
 
二、變量名稱
   由英文字母、數(shù)字和下劃線組成,開頭第一個字母不能使用數(shù)字,有大小寫區(qū)別,長度不限。
例:mydomain、_for_system、BlackCar
 
三、設(shè)定變量:變量名=值
   最好用雙引號或單引號把變量值括起來,單引號的作用是形成一個所見即所得的字符串,不會進行任何替換變量的操作,雙引號可以替換變量、命令執(zhí)行結(jié)果及算術(shù)運算結(jié)果。
設(shè)定局部變量
例:myname="liting wen"
[root@localhost ~]# cat bb
#! /bin/bash
shopt -s -o nounset
h="twenty_four"
i="i am $h"
echo $i
[root@localhost ~]# ./bb
i am twenty_four
在腳本前面加上shopt -s -o nounset可以避免手誤寫錯變量,-s:打開選項,nounset:變量一定要先設(shè)定過才能使用,否則會提示unbound variable
 
設(shè)定全局變量:
全局變量=環(huán)境變量
若該變量需要在其他子進程中執(zhí)行,則需要用export來使變量變成環(huán)境變量。
[root@localhost ~]# cat testvar.sh
#! /bin/bash
testvar="hello world"
export testvar
echo $testvar
[root@localhost ~]# ./testvar.sh
hello world
[root@localhost ~]# bash           進入一個子shell
[root@localhost ~]# ./testvar.sh
hello world
 
四、讀取變量值
$變量名稱         ${變量名稱}
若變量后面接有字母或下劃線,必須用 {} 括起變量名
#! /bin/bash
shopt -s -o nounset
h=twenty
echo ${h}_four
[root@localhost ~]# ./bb
twenty_four
[root@localhost ~]# vim bb
[root@localhost ~]# ./bb                    否則會出現(xiàn)以下報錯
./bb: line 4: h_four: unbound variable
 
除了echo,bash還提供了一個和C語言類似的printf命令:
[root@localhost ~]# cat bb
#! /bin/bash
shopt -s -o nounset
h="wlt"
printf "%s""$h "
[root@localhost ~]# ./bb
wlt
s%:字符串
d%:整數(shù)
f%:浮點數(shù)
%%:顯示%這個符號
c%:字符
 
五、取消與清空變量
取消變量
unset變量名稱/函數(shù)名稱
    -v 表示要取消的是變量
   -f    表示要取消的是函數(shù)
例:
[root@localhost ~]# cat bb
#! /bin/bash
shopt -s -o nounset
h="twenty_four"
unset -v h
printf "%s""$h "
[root@localhost ~]# ./bb
./bb: line 5: h: unbound variable
 
清空變量:
變量名稱=
例:
[root@localhost ~]# cat bb
#! /bin/bash
shopt -s -o nounset
h="twenty_four"
h =                                
printf "%s""$h "
[root@localhost ~]# ./bb
                                                  
[root@localhost ~]#
 
六、變量的有效作用范圍
bash shell中 有兩種類型的變量:
全局變量
本地變量
本地變量只在本進程中有效
全局變量在shell會話和該shell產(chǎn)生的任何子進程中可見,本地變量只在創(chuàng)建他們的shell中可見。
查看全局變量:
[root@localhost ~]# printenv
SSH_AGENT_PID=3624
HOSTNAME=localhost.localdomain
DESKTOP_STARTUP_ID=
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
GTK_RC_FILES=/etc/gtk/gtkrc:/root/.gtkrc-1.2-gnome2
WINDOWID=24117329
USER=root
。。。。。。
LESSOPEN=|/usr/bin/lesspipe.sh %s
DISPLAY=:0.0
G_BROKEN_FILENAMES=1
COLORTERM=gnome-terminal
XAUTHORITY=/tmp/.gdmOKVDWV
查看特定進程下的所有環(huán)境變量:
[root@localhost ~]# set
BASH=/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=()
 
。。。。。。
HISTSIZE=1000
HOME=/root
HOSTNAME=localhost.localdomain
HOSTTYPE=i686
IFS=$' \t '
INPUTRC=/etc/inputrc
LANG=zh_CN.UTF-8
LESSOPEN='|/usr/bin/lesspipe.sh %s'
。。。。。。
XMODIFIERS=@im=none
_=clear
consoletype=pty
tmpid=0
使用set命令時并非所以默認的環(huán)境變量都會列出來,應(yīng)為雖然有很多環(huán)境變量,但并非所以環(huán)境變量都有值。
 
全局變量和本地變量的作用范圍例子:
[root@localhost ~]# echo $HOME
/root
[root@localhost ~]# bash                   用bash命令開啟一個新的shell
[root@localhost ~]# bash
[root@localhost ~]# echo $HOME                    全局命令依然可用
/root
[root@localhost ~]# exit
exit
[root@localhost ~]# exit                            退出兩層shell
exit
[root@localhost ~]# i=5                            定義一個本地環(huán)境變量
[root@localhost ~]# echo $i
5
[root@localhost ~]# bash                       再開啟一個新shell                                   
[root@localhost ~]# echo $i                   顯示不了發(fā)現(xiàn)剛才定義的環(huán)境變量
 
全局變量
export   -p :列出當前所有的環(huán)境變量
例:
[root@localhost ~]# cat testvar.sh
#! /bin/bash
testvar="hello world"
export testvar
echo $testvar
[root@localhost ~]# bash
[root@localhost ~]# ./testvar.sh
hello world
[root@localhost ~]#
 
設(shè)置PATH環(huán)境變量
Linux系統(tǒng)上發(fā)生的很多命令問題都是由PATH環(huán)境變量造成的,它定義shell在哪里查找命令行中輸入的命令,如果如法找到就會生成錯誤信息:
[root@localhost ~]# liting
bash: liting: command not found
[root@localhost ~]#
當程序把可執(zhí)行程序房子PATH環(huán)境變量以為的目錄中時,可以在現(xiàn)有PATH中添加新的搜索目錄。
[root@localhost ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
[root@localhost ~]# PATH=$PATH:/root/liting
[root@localhost ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/root/liting
[root@localhost liting]# chmod a+x aa
[root@localhost liting]# aa
it work!
[root@localhost liting]# cd
[root@localhost ~]# aa
it work!
[root@localhost ~]# cd /etc
[root@localhost etc]# aa
it work!
[root@localhost etc]#
 
七、bash的內(nèi)置命令和內(nèi)置變量
bash的內(nèi)置命令
可以不去程序搜尋路徑$PATH中尋找,直接就可以執(zhí)行,速度比較快,常見的內(nèi)置命令有:
alias、bg、bind、break、type、time、logout、export、exec、declare、dirs、echo、enable、help、if、kill、return等
 
bash默認建立了許多內(nèi)置變量,shellscript程序設(shè)計者不可不知
例如
BAHS、BASH_VERSION、CDPATH、HOME、HOSTTYPE、LANG、PATH、TMOUT、UID ……
 
八、調(diào)整變量的屬性
想某些變量的值不被修改,例如PI=3.14,可以把變量設(shè)為只讀變量
命令:
readonly
declare
 
readonly 變量名
[root@localhost ~]# cat bb
#! /bin/bash
shopt -s -o nounset
readonly x=3
x=8
echo $x
[root@localhost ~]# ./bb
./bb: line 4: x: readonly variable
3
[root@localhost ~]#
readonly -p :顯示目前只讀變量
readonly -f 函數(shù)名稱 :該函數(shù)式不可修改
readonly -a 數(shù)組變量 :只讀數(shù)組
 
declare -r 變量名稱

[root@localhost ~]# cat bb
#! /bin/bash
shopt -s -o nounset
x=2
declare -r x
x=8
echo $x
[root@localhost ~]# ./bb
./bb: line 5: x: readonly variable
2
[root@localhost ~]#
declare的其他用法:
declare -p VAR             顯示VAR的屬性
declare -a   arry             設(shè)定arry是個數(shù)組
declare   -i   VAR              設(shè)定VAR是整數(shù)型態(tài)
declare   -x   VAR            設(shè)定VAR為環(huán)境變量
 
九、別名  
查看系統(tǒng)設(shè)置的別名:
[root@localhost ~]# alias -p
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
 
設(shè)置別名
[root@localhost ~]# alias ld='ls -ld'
[root@localhost ~]# ld
drwxr-x--- 19 root root 4096 05-29 08:38 .
[root@localhost ~]# ld /etc
drwxr-xr-x 101 root root 12288 05-29 08:37 /etc
[root@localhost ~]#
取消別名
unalias 別名
unalias   -a 取消所有別名
[root@localhost ~]# unalias ld
[root@localhost ~]# ld /etc
/etc: file not recognized: Is a directory
[root@localhost ~]#
設(shè)置別名的文件:~./bashrc
 
十二、數(shù)組
bash shell只支持一維數(shù)組(關(guān)系型數(shù)組在bash4.0中才支持),其元素個數(shù)沒限制,數(shù)組的索引由0開始,不一定要連續(xù),也可以用算術(shù)表達式表示,如1+3
例:
A[0]=1
A[1]=3
A[2]="bash shell"
 
1、取出數(shù)組元素
取出數(shù)組A的第三個元素值:echo ${A[2]}
取出數(shù)組所有的元素:echo ${[@]}或echo ${[*]}   
取出數(shù)組元素的個數(shù) ${#A[@]}
例:
[root@localhost ~]# cat bb
#! /bin/bash
shopt -s -o nounset
A[0]=1
A[1]=3
A[2]=5
echo ${A[2]}
echo ${A[@]}
echo ${#A[@]}
[root@localhost ~]# ./bb
5
1 3 5
3
 
2、取消數(shù)組元素:unset A[n]    取消數(shù)組A:unset A
[root@localhost ~]# cat bb
#! /bin/bash
shopt -s -o nounset
A[0]=1
A[1]=3
A[2]=5
unset A[0]
echo ${A[0]}
echo ${A[@]}
echo ${#A[@]}
[root@localhost ~]# ./bb
./bb: line 7: A[0]: unbound variable
 
本文出自 “吖one的學(xué)習(xí)筆記” 博客,請務(wù)必保留此出處http://oneliting.blog.51cto.com/1043925/650908

本篇文章來源于 黑基網(wǎng)-中國最大的網(wǎng)絡(luò)安全站點 原文鏈接:http://www.hackbase.com/tech/2011-08-29/65169.html
本篇文章來源于 黑基網(wǎng)-中國最大的網(wǎng)絡(luò)安全站點 原文鏈接:http://www.hackbase.com/tech/2011-08-29/65169.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
bash 漏洞解析
Linux Shell腳本面試25問 - 博客 - 伯樂在線
Linux 命令之 shopt
Bash腳本編程基礎(chǔ)
Shell中的函數(shù)調(diào)用
Linux快速配置集群SSH互信
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服