shell通配符, 變量, shell作用域, $#@*等說明


1. 指定格式輸出當前時間:

  echo `date +%Y%m%d`  # 注意使用反引號, +號后面不要有空格

  反引號中的東西會被當做命令來執行, 並輸出執行的結果

2. $uid用於判斷當前是否是root用戶登陸的, 是為0, 否則非零.

 

3. * 匹配任意多個字符, 注意不要帶引號; ? 匹配任意一個字符

 [a-Z] 匹配任意小寫或大寫字母; [0-9] 任意數字; [abc] abc中任意一個

 [^abc] 取反的意思, 匹配任意非abc的一個字符;

 () 在子shell中執行括號中的命令, 如(ls), (cd xx/yy);

 {} 集合; mkdir -p a/{b,c}; a目錄下有b和c目錄

     mkdir -p a{b/m,c/n}; a目錄下有b和c目錄, b下有m,c下有n

  還可嵌套使用: mkdir -p a{b/{x,y},c/n};  b下有x,y兩個目錄

 {} 中的元素會被挨個拼接, 用法如下:

  

 

 4. shell中變量的使用(使用$ip來引用變量):

 shell中變量賦值可分為兩類, 分別是顯示賦值和隱式賦值

 ip=1.1.1.1  或者 read ip;     # read命令會讀取命令行中的輸入內容, 並賦值給變量ip

 read -p "請輸入內容: "  ip

 

5. shell中的位置變量, 

 與普通變量不同, 普通變量都需要先定義(無論是顯示賦值還是read), 再通過$name來引用; 而位置變量不同,

 位置變量是系統內置的, 無需定義, 直接在使用處通過$number來引用即可, 其會自動從命令行中對應位置獲取

 值並引用.

 

6. shell中變量分類(當前shell和全局):

 直接定義的ip=1.1.1.1只在當前shell中有效, 可使用export ip來使ip為全局作用域生效, 此處全局也只限於當前shell

 及其子shell中使用, 跨端的shell是引用不到的.

 

7. 注意理解當前shell和子shell的區別, 當前shell中不使用export定義的變量, 使用bash, sh或相對路徑執行的文件內是

 引用不到變量的, 但是使用. 或者 source執行的文件是可以引用的;  同理在文件中定義的變量, 要想在shell中引用到

 就必須使用. 或source來執行, 因為這兩種方式是在當前shell中執行文件內容的.

 反引號中的命令也是在子shell中執行的, 如果在反引號中調用函數, 則在當前shell中無法引用到函數中不適用local定義

 定義的變量, 就是因為反引號造成的.

 

8. 查看系統中已存的所有環境變量, 直接輸入: env 回車即可.

 

basename 用來獲取文件名, 使用$0時,獲取到的是輸入可能是帶路徑的文件, 常配合basename使用來獲取文件名

如: basename $0;       dirname 用來獲取目錄名稱,及文件名之前的所有


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM