歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Linux操作系統學習筆記管理初識Shell(2)

Shell變量

Shell變量和其他語言的變量含義大同小異,就是可以存放不同的內容,它也為靈活管理Linux系統提供特定參數。一般有兩層意思:變量名:使用固定的名稱,由系統預設或用戶定義;變量值:能夠根據用戶設置、系統環境變化而變化。

Shell變量的種類:

用戶自定義變量:由用戶自己定義、修改和使用

環境變量:由系統維護,用於設置用戶的Shell工作環境,只有極少數的變量用戶可以修改

預定義變量:Bash預定義的特殊變量,不能直接修改

位置變量:通過命令行給程序傳遞執行參數,如ls -l  /etc/httpd,其中後面兩個參數可視為位置參數。

變量的賦值與引用:

定義新的變量名要以英文字母或下劃線開頭,區分大小寫,格式為:變量名=變量值

查看變量的值:echo  $變量名

[root@localhost ~]# DAY=Sunday 
[root@localhost ~]# echo $DAY   ==>通過$符號引用指定名稱的變量值
Sunday 
[root@localhost ~]#

(注意:在查看變量時,如果變量名容易和後邊的字符串連在一起導致混淆,則應該使用大括號將變量名括起來,使用形式為:${變量名}  ,例如:  若已知變量Var的值為Benet,則執行“echo $Var3.0”命令後將顯示結果“.0”而不是“Benet3.0”,因為在該命令中,會將“Var3”當成變量名(默認未定義此變量)。若希望正確顯示“Benet3.0”的輸出結果,則需要執行“echo ${Var}3.0”)

[root@localhost ~]# Var =Benet
[root@localhost ~]# echo $Var
Benet
[root@localhost ~]# echo $Var3.0
.0
[root@localhost ~]# echo ${Var}3.0
Benet3.0
[root@localhost ~]# 

   從鍵盤輸入內容為變量賦值,格式為:read  [-p  "輸入信息"]  變量名

[root@localhost ~]#read var
haha    ==>這裡等待輸入
[root@localhost ~]#echo $var
haha
[root@localhost ~]#

    在給變量賦值時,使用不同的引號操作的區別:

1)使用雙引號時,允許在雙引號的范圍內使用“$”符號引用其他變量的值(變量引用)

2)使用單引號時,將不允許在單引號的范圍內引用其他變量的值,“$”符號或者其他任何符號將作為普通字符看待

 

[root@localhost ~]#name=linuxidc
[root@localhost ~]#echo $name
linuxidc
[root@localhost ~]#myname="$name is me"  ==>這裡使用的是雙引號
[root@localhost ~]#echo $myname
linuxidc is me   ==>將$name這個變量執行出來了
[root@localhost ~]#myname='$name is me'   ==>這裡使用的是單引號
[root@localhost ~]#echo $myname
$name is me   ==>原樣顯示出來了,$name沒有執行
[root@localhost ~]#

 

3)使用反撇號時,允許將執行特定命令的輸出結果賦值給變量(命令替換),反撇號中的內容要求是可執行的命令。需要嵌套使用時,可以將反撇號改為 $( ... ) 的形式

     這麼說吧,在一串命令中,在`之內的命令會被先執行,然後將其執行出來的結果作為外部的輸入信息。

 

[linuxidc@localhost ~]$ locate crontab
/etc/anacrontab
/etc/crontab
/usr/bin/crontab
/usr/share/man/man1/crontab.1.gz
.....
[linuxidc@localhost ~]$ ls -l `locate crontab`    ==>先執行locate crontab,再執行ls -l
-rw-r--r-- 1 root root    298 2006-12-18 /etc/anacrontab
-rw-r--r-- 1 root root    255 2006-07-15 /etc/crontab
-rwsr-sr-x 1 root root 315416 2008-07-15 /usr/bin/crontab
-rw-r--r-- 1 root root   1846 2008-07-15 /usr/share/man/man1/crontab.1.gz
.....
[linuxidc@localhost ~]$ 

 

 設置變量的作用范圍,格式:export  變量名

 一般情況下,父進程的自定義變量是無法在子進程中使用的,但是通過export將變量變成環境變量後,就能夠在子進程下使用了。

 

[root@localhost ~]#name=linuxidc
[root@localhost ~]#echo $name
linuxidc
[root@localhost ~]# export name ==>輸出為全局變量
[root@localhost ~]# zsh
[root@localhost]~# echo $name
linuxidc
[root@localhost]~# exit
[root@localhost root]# unset  name==>消除變量內容
[root@localhost root]# echo $name

[root@localhost ~]#

變量還有一個好處,當您經常訪問一個目錄時,而且這個目錄比較長,可以將它付給一個簡單的變量,這樣進入這個目錄時候只需cd  變量就行了。如work="~/temp/2013/test/",則進入這個目錄只需cd  work。

數值變量的運算:

之前講到過可以使用命令bc來打開一個計算器,其實Bash程序並不適合進行強大的數學運算,例如小數或指數運算的,一般只能進行簡單的整數運算,若不使用bc,則也可以使用下列格式來進行簡單數值計算:

格式:expr  變量1  運算符  變量2  [..運算符  變量n...]

expr命令常用的運算符有:+、-、\*(注意要有\)、/、%

[linuxidc@localhost ~]$ expr  10 * 2
expr :語法錯誤
[linuxidc@localhost ~]$ expr 10 \* 2
20
[linuxidc@localhost ~]$expr 10 + 2
12
[linuxidc@localhost ~]$

環境變量

   環境變量配置文件:全局配置文件:/etec/profile

          用戶配置文件:~/.bash_profile

 查看環境變量:env  

    set    (set命令可以查看所有的Shell變量,其中包括環境變量)

 常見的環境變量:

$USER、$LOGNAME變量表示當前用戶的登錄名稱

$UID變量表示當前用戶的UID號

$SHELL變量表示用戶使用的登錄Shell

$HOME變量表示用戶的宿主目錄

$PWD變量表示用戶當前的工作目錄

$PS1和$PS2變量分別代表了當前用戶的主提示符(命令行提示符)和輔助提示符(例如,執行at命令後的“>”)

Copyright © Linux教程網 All Rights Reserved