Shell指令碼程式設計01 基礎知識

2021-09-06 06:47:18 字數 1543 閱讀 9087

shell指令碼與windows/dos下的批處理相似,就是將各類命令預先放入到乙個檔案中,然後執行該檔案,便可以達到與批處理類似的功能,主要是方便管理員進行設定或者管理用的。

換句話來說,shell指令碼是利用shell的功能所寫的乙個程式,這個程式使用純文字檔案,將一些shell的語法與指令寫在裡面,然後用正規表示法,管線命令以及資料流重導向等功能,以達到我們所想要的處理目的。

這裡有必要說一下shell和shell指令碼的區別。

shell就是乙個命令列直譯器,它的作用就是遵循一定的語法將輸入的命令加以解釋並傳給系統。它為使用者提供了乙個向linux傳送請求以便執行程式的介面系統級程式,使用者可以用shell來啟動、掛起、停止甚至是編寫一些程式。shell本身是乙個用c語言編寫的程式,它是使用者使用linux的橋梁。

shell既是一種命令語言,又是一種程式語言(shell指令碼)。作為命令語言,它互動式地解釋和執行使用者輸入的命令;作為程式語言,它定義了各種變數和引數,並提供了許多在高階語言中才具有的控制結構,包括迴圈和分支。它雖然不是 linux系統核心的一部分,但它呼叫了系統核心的大部分功能來執行程式、建立文件並以並行的方式協調各個程式的執行。

1.語法基礎

1.1開頭

shell指令碼程式必須以如下的語句行開始(必須方在檔案的第一行):

#!/bin/sh

「#!/bin/sh"是對shell的宣告,說明你所用的是那種型別的shell及其路徑所在。如果沒有該語句宣告,則指令碼將在預設的shell中執行。

1.2注釋

在進行shell程式設計時,以#開頭的句子表示注釋,直到這一行的結束。

備註:「#!/bin/sh"不是注釋。

1.3變數

在shell程式設計中,所有的變數都由字串組成,並且不需要對變數進行宣告。對變數賦值,可以使用如下語句:

var="hello world"

備註:「=」前後不能有空格,句尾不能有「;」。

2.常用指令

echo "some text": 將文字內容列印在螢幕上

ls: 檔案列表

wc –l filename:計算檔案行數

wc -w filename:計算檔案中的單詞數

wc -c filename: 計算檔案中的字元數

cp sourcefile destfile: 檔案拷貝

mv oldname newname : 重新命名檔案或移動檔案

rm filename: 刪除檔案

grep 'string' filename: 在檔案內搜尋字串

cat filename: 輸出檔案內容到螢幕上

file filename: 得到檔案型別

read var: 提示使用者輸入,並將輸入賦值給變數

find: 搜尋檔案

tee: 將資料輸出到標準輸出裝置(螢幕) 和檔案比如:somecommand | tee outfile

basename filename: 返回不包含路徑的檔名

dirname filename: 返回檔案所在路徑

sed: 查詢替換

Shell指令碼基礎知識

shell 變數 命名規則 首字元為字母 中間不能有空格,可用下劃線 不能使用標點和bash的關鍵字 賦值 顯示命名 不能加 語句賦值 唯讀變數 readonly variable name 刪除變數 unset varible name 不能刪除唯讀變數 shell字串 字串可以用單引號 雙引號 ...

shell指令碼基礎知識

自定義shell變數時,變數有什麼規格?可以使用字母,數字,下劃線,不能以數字開頭 變數名區分大小寫 賦值時等號兩邊不要有空格 不要使用關鍵字或特殊字元,給同乙個變數多次賦值時,最後一次生效。簡述預定義變數 0 的作用?儲存當前執行的程式pid號 上乙個執行命令的返回狀態 0 當前執行的指令碼名 位...

shell指令碼基礎知識

雖然現在能在linux系統下生存,但是自覺效率太低,和高手有很大的差距。這就是關於linux的知識太過匱乏,有很多事情知道該怎麼做,但是就是沒法在linux下實現,為了提公升工作效率,必須要接觸linux高階技巧 linux的東西比較深,沒法一下學完,所以只要能掌握生信必備的基礎就好了。一些主要的流...