Linux入門第五天——shell腳本入門(上)基本概念

1、什麼是shell腳本

  Shell 腳本(shell script),是一種爲 shell 編寫的腳本程序。html

2、shell入門

   1.先導知識linux

  變量知識補充http://www.javashuo.com/article/p-qpvrlpad-bo.htmlshell

   必備先導知識:###來自鳥哥私房菜編程

1. 指令的執行是從上而下、從左而右的分析與執行;
2. 指令的下達就如同第四章內提到的: 指令、選項與參數間的多個空白都會被忽略掉;
3. 空白行也將被忽略掉,而且 [tab] 按鍵所推開的空白一樣視爲空白鍵;
4. 若是讀取到一個 Enter 符號 (CR) ,就嘗試開始執行該行 (或該串) 命令;
5. 至於若是一行的內容太多,則可使用「 [Enter] 」來延伸至下一行;
6. 「 # 」可作爲註解!任何加在 # 後面的數據將所有被視爲註解文字而被忽略!

  常見執行腳本的方法:vim

chmod +x ./test.sh #使腳本具備執行權限數組

絕對路徑:使用 /home/dmtsai/shell.sh 來下達指令;
相對路徑:假設工做目錄在 /home/dmtsai/ ,則使用 ./shell.sh 來執行  ###若是直接寫shell.sh須要PATH中包含此目錄!
變量「PATH」功能:將 shell.sh 放在 PATH 指定的目錄內,例如: ~/bin/

  使用set命令能夠查看全部變量bash

   2.第一個shell script——hello worldide

#!/bin/bash # my first shell script echo "hello world"

 

#! 是一個約定的標記,它告訴系統這個腳本須要什麼解釋器來執行,即便用哪種 Shell。 # 是註釋的標記 最後一行爲正文

 依次使用如下指令:spa

  

   // 複習 chmod的使用!.net

  在介紹完hello world後,分享鳥哥的shell編寫建議:——相似編程規範,請儘可能遵照!

另外,在一些環境的設置上面,畢竟每一個人的環境都不相同,爲了取得較佳的執行環境, 我
都會自行先定義好一些必定會被用到的環境變量,例如 PATH 這個玩意兒! 這樣比較好啦~
因此說,建議你必定要養成良好的 script 撰寫習慣,在每一個 script 的文件開始處記錄好:
script 的功能;
script 的版本信息;
script 的做者與聯絡方式;
script 的版權宣告方式;
script 的 History (歷史紀錄);
script 內較特殊的指令,使用「絕對路徑」的方式來下達;
script 運行時須要的環境變量預先宣告與設置。

   TIPS:sh文件後綴並非必須的(前面咱們有提到過linux不之後綴區分文件類型),只是習慣上,咱們以sh爲後綴!

#!/bin/bash # Program: # This program shows the user's choice
# History: # 2015/07/16 VBird First release PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH

 

3、shell練習

  1.對談式腳本——read命令的使用:read

    由用戶輸入first name與 last name,程序輸出 full name

#!/bin/bash #function: # input first-name and last-name,output the full-name #author: # zcc on 2017/12/14 read -p "please input your first name" firstname read -p "please input your last name" lastname echo -e "your first name is ${firstname} ,last name is ${lastname}"

  執行:

root@ccc:/tmp# chmod +x showname.sh root@ccc:/tmp# ./showname.sh please input your first namejiangbei please input your last namez your first name is jiangbei ,last name is z

   2.日期式腳本——date的使用:date

    由用戶輸入文件名,建立3個文件,文件名爲用戶輸入+近3天日期

vim create_3_filename.sh
#頭部省略,請自行思考如何補充(包括使用規範)
read -p "please input the filename:" fileuser #use the var syntax filename=${fileuser:-"filename"} date1=$(date -d "+1 day" +%Y%m%d) date2=$(date +%Y%m%d) date3=$(date -d "-1 day" +%Y%m%d) file1=${filename}${date1} file2=${filename}${date2} file3=${filename}${date3} touch "${file1}" touch "${file2}" touch "${file3}"
chmod u+x create_3_filename.sh

  複習以前變量的用法,例如使用$()等!

  執行結果以下:

    

  3.數值運算

    更多數值計算,參考http://www.mamicode.com/info-detail-1324934.html

  輸入兩個數,輸出相加結果:

  1 #!/bin/bash 2 #function: 3 #       add 2 numbers 4 #author: 5 #       jiangbei on 2017/12/15
  6 read -p "input the first number:" first 7 read -p "input the second number:" second 8 total=$((${first}+${second})) 9 echo -e "the total is ${total}"

  其餘與上文重複過程省略,基本上,數值運算可使用如下兩種方式:

 declare -i total=${firstnu}*${secnu} 
var=$((運算內容))  ###注意爲兩個括號!

   固然,以上只是整數運算,若是須要支持小數,能夠經過bc來進行:

echo "123.123*55.9" | bc

 補充:腳本執行方式的差別

   有了一點腳本的基礎後,咱們來看執行方式的差別:

當使用前一小節提到的直接指令下達 (不管是絕對路徑/相對路徑仍是 ${PATH} 內),或者是
利用 bash (或 sh) 來下達腳本時, 該 script 都會使用一個新的 bash 環境來執行腳本內的
指令!也就是說,使用這種執行方式時, 其實 script 是在子程序的 bash 內執行的!咱們在
第十章 BASH 內談到 export 的功能時,曾經就父程序/子程序談過一些概念性的問題, 重點
在於:「當子程序完成後,在子程序內的各項變量或動做將會結束而不會傳回到父程序中」!
View Code

  因此,以前的./xx.sh是另外起的一支子程序,其中的數據在執行結束後將會被抹去,若是想要保留,能夠經過如下的方式:

  使用 source命令:source showname.sh 

showname.sh 
會在父程序中執行的,所以各項動做都會在本來的 bash 內生效!
這也是爲啥你不登出系統而要讓某些寫入 ~/.bashrc 的設置生效時,
須要使用「 source ~/.bashrc 」而不能使用「 bash ~/.bashrc 」是同樣的啊!

  更多請參考:http://blog.csdn.net/violet_echo_0908/article/details/52056071

 4、shell數據類型

  支持整形、字符串以及一維數組 

#字符串,單雙引號見參考連接 your_name='qinjx' #數組 array_name=(value0 value1 value2 value3)
#數組的下標能夠不連續,shell屬於弱類型 array_name[
0]=value0 array_name[1]=value1 array_name[n]=valuen

  完整介紹,參考菜鳥教程http://www.runoob.com/linux/linux-shell-variable.html

  更多數據類型介紹,參考http://blog.csdn.net/a1055186977/article/details/71402758

相關文章
相關標籤/搜索