shell腳本是學習linux的必修課,能幫助你快速完成一些複雜操作話雖如此畢竟也只是一些命令放到了一起罷了。shell能夠提供一些內部命令,並且能夠通過PATH環境變量來找到外部命令把命令提交給內核啓動爲進程。
在編寫shell腳本時第一行必須爲#!/bin/bash因爲shell是解釋型的語言需要一個解釋器來運行它,而/bin/bash就是解釋器,python也是解釋型語言也需要解釋器來運行。在寫shell時所有以#開頭的行都會被當做註釋來處理(除了第一行的#!/bin/bash),shell腳本的命名通常爲*.sh前面的*代表任意字符後綴爲固定格式.sh
在編程語言中要經常使用變量來完成操作不然的話一個內容在腳本中出現15次你就要修改15次那豈不是要累死的節奏。所以使用變量的好處就是隻修改變量裏面的內容然後下面的內容都會被修改,那變量是什麼。
變量可以理解爲一個臨時的只可存放一個數據的容器,而這個容器可以存放很多類型的數據如:字符型、數值型、布爾型,其中布爾型就是判斷真假的,0爲真1爲假。
在shell腳本中所有的變量如果不聲明類型的話默認爲字符型。當寫完一個shell腳本時我們需要判斷一下是否有語法錯誤則可以使用bash -n 腳本名稱例如:bash -n 1.sh,如果需要顯示shell腳本的執行過程則可以使用bash -x 1.sh看下我前天寫的shell腳本吧(就只看一段)
每一行前面都有一個+號或者++,+號則代表腳本當前執行的命令,++則代表執行trap機制中的命令,其他內容則爲輸出信息。(這個腳本會在附件裏)
接下來說一說for循環吧,其實很簡單,它的格式爲:
for VAR in LIST;do
循環內容
done
其中var代表一個變量list則爲列表這個列表裏可以存放一個命令的執行結果也可以存放字符串集合。定義列表的方式有:
1.直接給出
2.數值列表:數值列表可使用{start..end}來定義也可使用seq LAST來定義
接下來就是一些實例了(一定要多動手)
0x01:在/tmp/test目錄中創建10個文件(首先要確保目錄存在)
#!/bin/bash
dir="/tmp/test"
mkdir $dir
for i in {1..10};do
touch $dir/$i
done
在我們執行完腳本後/tmp/test這個目錄下就會有10個文件
0x02:添加10個用戶user1-user10
#!/bin/bash
for i in {1..10};do
useradd user${i}
done
非常簡單的使用,只要多加練習即可做到不需要什麼途徑,關於附件裏面的腳本我使用了函數、if循環、while循環、case等這些內容都會在後面講到,看不懂沒關係。