【Shell 編程筆記 】 基礎篇
04-07
在數據分析之前,我們會首先對數據進行處理,而shell用來對原始數據的預處理有著很好的作用,學一下對我們更加方便。並且shell還能夠自動運行我們的腳本,一鍵化處理文件,快捷輕鬆。
Shell的解釋執行功能
Shell可以解釋我們敲入的單條命令或者是多條命令的組合,提交給內核來處理,將處理的結果直接反饋給用戶,即互動式的方式。另外一種方式是編程的方式,用戶可以將要執行的命令按照自己的邏輯組織成一個腳本,然後將整個腳本提交給shell,帶shell解析完成後,回饋給用戶。shell程序
通常由一段Linux命令(外部命令)、shell命令(內置命令)、控制語句以及注釋語句構成。shell腳本的編寫
shell腳本是純文本文件,可以使用任何文本編輯器編寫 shell腳本通常是以.sh 作為後綴名,類似於windows下的.bat批處理文件內容章節
變數
本地變數、環境變數、位置參量
輸入、輸出
read/echo 或 printf條件測試
整數測試、邏輯測試、字元串測試控制語句
條件/循環/分支
函數
常用shell程序內置指令
declare/export/eval/trap等現在一起來編寫shell程序吧!!!
1. 第一行:指定用哪個程序來編譯和執行腳本
#!/bin/bash//01hello.sh文件#!/bin/bashecho hello world!!!
echo是shell命令,內部命令
一、 變數
局部變數A ,如果在shell腳本中寫入echo $A,則為空。因為A是局部變數,不能被子進程繼承,shell腳本的執行是子進程。如果要在子進程的調用中顯示A的值,設置為全局 : export A,能被子進程繼承。在腳本01hello.sh中追加 echo $A顯示變數的值 : echo $variable 或echo ${variable}它們兩者的區別:清除變數 : unset variable顯示所有變數 : set
顯示環境變數 : env環境變數和只讀變數 環境變數稱為全局變數,按照慣例需要大寫。注意: 可被所有的shell環境下訪問;如果父shell進程產生了子shell進程,則環境變數可被「繼承」並複製,本地變數不能被繼承。
設置全局變數 : export M2=200 或者是M2=200; export M2
只讀變數: 指不能被清除或重新賦值的變數 readonly myvar位置參量(命令行參數)
位置參量是一組特殊的內置變數,通常被shell腳本用來從命令行接受參數,或被函數用來保存傳遞給它的參數。 執行shell腳本時,用戶可以通過命令行向腳本傳遞信息,跟在腳本名後面的用空格隔開的每個字元串都稱為位置參數。 在腳本中使用這些參數時,需通過位置參量來引用。例如: $1表示第一個參數,$2表示第二個參數,以次類推。$9以後需要用花括弧把數字括起來,如第10個位置參量以${10}的方式來訪問。IFS=# 是以#為分隔位置參數,加雙引號後,用"$*"分隔兩個位置參數,而不用雙引號,則沒有這樣的分隔顯示後台運行的最後一個進程號grep進行查找: $?表示: 顯示退出狀態,正確為·(0)還是錯誤為(1)二、數組:
我們可以看到arr[3]是沒有值,而arr[4]有值,這和其他語言不一樣推薦閱讀: