bash脚本程序语法Linux
生活随笔
收集整理的這篇文章主要介紹了
bash脚本程序语法Linux
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
摘要
Shell程序,就是把需要計算機執行的Linux命令羅列到一個文件,再加上控制語句。解釋型語言,不需要編譯,即腳本文件。Linux下常用的用戶登錄Shell有Bash,sh,csh,tcsh,ksh,它們同時也是Shell程序解釋器。
解釋器不同,語法也有些差別。
Bash是Linux默認的Shell程序解釋器。
文章目錄
- 摘要
- 創建步驟
- 結構與基本語法
- 變量
- 控制語句
- 順序結構:
- 分支結構
- 循環結構
- Shell程序調試
創建步驟
- 新建一個文件并打開touch filename or vim filename
- Vim編輯器進入插入模式i,編輯寫入腳本
- 寫好后存盤退出wq!
- 修改文件權限,增加可執行權限chmod +x filename
- 執行文件./filename
結構與基本語法
Shell程序由三部分組成:首行、注釋行、程序體。
經常在Shell程序的首行指明本Shell采取哪個解釋器:
#!/bin/bash如果沒有指明,將會采用用戶登陸Shell程序來解釋執行,查看用戶登陸Shell程序名命令為
echo $SHELL除首行外以#開頭的行是注釋行
包含三類結構語句:順序、分支、循環結構。
變量
Shell變量根據賦值類型決定數據類型,每次賦值可以重新修改變量數據類型。包括
- 普通變量 :數值、字符串
- 一維數組變量 :數組下標從0開始編址。
- 特殊變量:由Bash自動定義和賦值,用戶不能修改。
注意:賦值等號左右邊不要有空格。
注意:不要隨便出現空格,與python完全不一樣的感覺,否則就會無法成功執行。
| $$ | 表示當前進程號,即PID |
| $? | 前一個命令的退出狀態,0執行成功,1執行失敗 |
| $# | 命令行參數個數,不包括命令本身 |
| $0 | 命令本身 |
| $i | 0< i <9, 命令行的第i個參數,兩位數后得 {} 起來 |
| $* | 全部命令行參數 |
控制語句
順序結構:
從上到下順序執行一系列命令
分支結構
| !表達式 | 表達式邏輯值取反 |
| 表達式1 -a 表達式2 | 邏輯運算"與"操作 |
| 表達式1 -o 表達式2 | 邏輯運算"或"操作 |
| =/!= | 字符串的比較 |
| -eq | 整數相等 |
| -ge/-gt | 大于/大于等于 |
| -le/lt | 小于/小于等于 |
| -d file | file是目錄為真 |
| -e file | 是文件為真 |
| -z string | string是空字符串為真 |
注意:一個匹配模式下可以出現多條語句。
循環結構
#!/bin/bash #example1 ---for for i in 1 2 3 4 5; doecho "${i}次|" done #分號無影響 for i in 1 2 3 4 doecho "`expr ${i} \* ${i}`次" done#example2 for((i=1;i<10;i++)); doecho "第${i}次" done#example3---while total=0 while read line; dototal=(expr ${total} + 1) done<<(cat /etc/passwd) #顯示/etc/passwd文件內容并作為while命令的輸出(輸入重定向) echo ${total}#example4 #!/bin/bash PS3="Please select:" #顯示Shell變量PS3的值,并等待用戶輸入,輸入值賦給menu menus="com|net|org|edu|quit" IFS="|" #Shell變量IFS的值作為分隔符,切割menus為多個項。并在每個項前加一個序號并以列的形式顯示到顯示器上。 select item in ${menus};docase ${item} incom) echo "Apply com domain";;net) echo "Apply net domain";;org) echo "Apply org domain";;edu) echo "Apply edu domain";;quit) break;;esac done運行結果如下所示:
hazel@hazel-VirtualBox:~/code$ ./gram.bash 1) com 2) net 3) org 4) edu 5) quit Please select:3 apply org domain Please select:2 apply net domain Please select:1 apply com domain Please select:4 apply edu domain Please select:5循環控制語句:break、continue;二者都只能出現在循環體中,前者是退出循環,后者是跳出該輪,進入下一輪循環。
#example5 #!/bin/bash for file in *;doif[${file}="." -o ${file}=".."] then continue #對于.和..不做處理fi[${fil}="123"]&&break #遇到文件123就跳出循環,&&命令序列連接符cp -r ${file} ${file}.old #其他文件就備份 doneShell程序調試
Shell程序是解釋性語言,常用辦法是帶-x執行程序將執行到的語句全部顯示出來。
bash -x file.bash代碼很長時(語句最好不要超過1000行),可在需要調試的程序塊前后增加調試標記,塊前插入set -v,塊后插入set +v。調試時 就會只打印調試塊中的執行語句。
總結
以上是生活随笔為你收集整理的bash脚本程序语法Linux的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux /etc/profile文件
- 下一篇: linux系统中profile文件介绍