標籤:shell 變數
SHELL第二課學習筆記
A.指令碼規範申明資訊:
#!bin/bash#Date 14:00 2014-1-30#Author xiaoping#Mail [email protected]#Function: Thsi scrits funcion is ....#version 1.1~
B.注意點:
a.成對內容一次寫出來
{}、[]、‘‘、``、""#
b.[]中括弧兩端需要空格
c.流程式控制制語句一次性寫完格式
d.vi多行縮排
按v進入visual狀態,選擇多行,用shit+>或shit+<縮排或縮出
C.SHELL中的變數:
a.局部變數和環境變數,局部變數只適用於當前shell,而環境變數是全域的,它適用於所有當前shell以及其派生出來的任意子進程,有些變數是使用者建立的,其他的則是專用的shell變數。
環境變數可以在命令中設定,但使用者退出時這些變數值也會丟失,因此最好在使用者家目錄下的.bash_profile檔案中或在全域配置/etc/bashrc,或/etc/profile檔案或者/etc/profile.d/中定義。將環境變數放入profile檔案中,每次使用者登入時這些變數值都將被初始化。規範上的所有環境變數均為大寫。環境變數應用於使用者進程前,必須用export命令匯出。
b、局部變數
局部變數的範圍被限定在建立它們的shell中。local函數可以用來建立局部變數,但僅限於函數內使用。局部變數可以通過簡單的賦予它一個值或一個變數名來設定,用declare內建函數來設定,或者省略也可。
顯示環境變數例如:
[[email protected] jiaoben]$ echo $HOME/home/xiaoping[[email protected] jiaoben]$ echo $PS1[\[email protected]\h \W]\$[email protected] jiaobe
HISTSIZE |
記錄在命令列檔案中的命令列數 |
TMOUT |
退出前等待逾時的秒數
|
vi /etc/profile #後面添加然後儲存測試HISTSIZE=5 TMOUT=5[[email protected] jiaoben]# . /etc/profile[[email protected] jiaoben]# timed out waiting for input: auto-logout [[email protected] jiaoben]$[[email protected] jiaoben]# . /etc/profile[[email protected] jiaoben]# history 618 . /etc/profile 619 history 620 vi /etc/profile 621 . /etc/profile 622 history[[email protected] jiaoben]# timed out waiting for input: auto-logout[[email protected] jiaoben]$
D.自己定義的環境變數標準:(一般是字母,數字,底線組成,字母開頭)
a.export 變數名=value
b.變數名=value;exprot 變數名
c.declare -x 變數名=value
提示:以上為三種設定環境變數的方法
E.定義局部變數:
一般變數是數字不用引號,命令變數用``引用,其他用雙引號。
單引號:
可以說是所見即所得 (WYSIWYG):即將單引號內的內容原樣輸出,或者描述為單引號裡面看到的是什麼就會輸出什麼。
雙引號:
把雙引號內的內容輸出出來;如果內容中有命令、變數等,會先把變數、命令解析出結果,然後在輸出最終內容來。
不加引號:
不會將含有空格的字串視為一個整體輸出, 如果內容中有命令、變數等,會先把變數、命令解析出結果,然後在輸出最終內容來,如果字串中帶有空格等特殊字元,則不能完整的輸出,需要改加雙引號,一般連續的字串,數字,路徑等可以用。
例1:
[[email protected] oldboy]# echo ‘`date`‘#→單引號時看到啥就顯示啥`date`[[email protected] oldboy]# echo "`date`"#→雙引號時如果裡面是變數,會先把變數解析成具體內容在顯示Sat Oct 29 18:02:59 CST 2011[[email protected] oldboy]# echo `date`#→對於連續的字串等內容一般不加引號也可,加雙引號一般比較保險,推薦Sat Oct 29 18:03:08 CST 2011
拓展:awk調用shell變數問題
雙引號:
可以說是所見即所得 (WYSIWYG):即將雙引號內的內容原樣輸出,或者描述為雙引號裡面看到的是什麼就會輸出什麼。
單引號:
把單引號內的內容輸出出來;如果內容中有命令、變數等,會先把變數、命令解析出結果,然後在輸出最終內容來。
例1
[email protected] ~]$ ett=123 [[email protected] ~]$ awk ‘BEGIN {print ‘$ett‘}‘123[[email protected] ~]$ awk ‘BEGIN {print "$ett"}‘$ett[[email protected] ~]$ ett=‘abc‘[[email protected] ~]$ awk ‘BEGIN {print "$ett"}‘$ett[[email protected] ~]$ awk ‘BEGIN {print ‘$ett‘}‘[[email protected] ~]$ awk ‘BEGIN {print "‘$ett‘"}‘abc
F.指令碼定義函數中的變數作用僅在函數中的作用。
總結:模仿炒作系統內建的etc/init.d/function函數庫指令碼的思路。
tar zcf etc_${date +%F}_xiaoping.tar
本文出自 “小k” 部落格,請務必保留此出處http://zyp88.blog.51cto.com/1481591/1607600
SHELL第二課學習筆記