【Shell 編程筆記 】 基礎篇

在數據分析之前,我們會首先對數據進行處理,而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!!!

查看命令的類型

cp,ps是linux命令,外部命令

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]有值,這和其他語言不一樣
推薦閱讀:

TAG:海量數據處理 | 數據分析 | shell腳本 |