Linux學習之Shell指令碼程式設計

2021-08-16 01:16:16 字數 1864 閱讀 8335

一.shell指令碼定義

shell是系統的使用者介面,提供了使用者與核心進行互動操作的一種介面。它接收使用者輸入的命令並把它送入核心去執行。實際上shell是乙個命令直譯器,它解釋由使用者輸入的命令並且把它們送到核心。

shell翻譯成殼的意思,它是包裹在linux核心外層的,乙個可通過一系列的linux命令對作業系統發出相關指令的人機介面。 shell可以通過其條件語句和迴圈語句等,把一系列linux命令結合在一起,形成乙個相當於面向過程的程式,shell script,來實現一些較為複雜的功能。

總括,shell是linux命令集的概稱,是屬於命令列的人機介面。shell 是乙個用c語言編寫的程式,它是使用者使用linux的橋梁。shell既是一種命令語言,又是一種程式語言。shell 是指一種應用程式,這個應用程式提供了乙個介面,使用者通過這個介面訪問作業系統核心的服務。ken thompson的sh是第一種unix shell,windows explorer是乙個典型的圖形介面shell。shell 和shell script不是一回事,通常我們說的都是shell script。

由定義可知, shell相當於經過裝飾的命令列,和命令列一樣,都能操作linux。但是shell是面向過程的,相當於有了一定的邏輯和過程,而命令列只是單一的操作。

二.使用shell指令碼

1、建立字尾是sh檔案,用來啟動指令碼

命令:./檔名.sh  比如:./start.sh

注意:

(1)啟動linux指令碼時出現許可權不夠

輸入命令:chmod 777 ./指令碼名  比如:chmod 777 ./start.sh

(2)乙個規範的shell指令碼在第一行會指出由哪個程式(直譯器)來執行指令碼中的內容,這一行內容在linux bash的程式設計一般為:#!/bin/bash

2、變數

1)自定義變數

變數名=value  比如:

a="hello word"   

echo $a

注意:(1)「=」賦值左右兩邊都不要有空格 (2)輸出結果時,$n傳遞給指令碼或者函式的引數,n表示第幾個引數

2)陣列

(1)遍歷陣列

for i in $a;

do echo $i // 列印元素

done

3、shell指令碼執行命令列

變數名=$(command)  比如:將命令列輸出的結果賦值給變數

a=$(ls)

echo $a

注意1:如果想執行多個命令列來達到要求,需要在單個命令列後面加上「;」,如下:

$(find . -name "lb3*" >> /home/lb3/11;find /home/lb3/11 -type f|xargs grep "2017")
注意2:執行cd命令時不起作用,解決方法,如下:

(1)用命令source ./指令碼名來執行指令碼;

(2)將路徑換成絕對路徑。

4、擷取內容

$
5、檔案操作

(1)將資料夾下的所有資料夾進行.tar.gz打包,並將所有資料夾刪除

命令:cd /mnt/udisk/l6t/2017/01

for x in `ls`;do tar -zcvf $x.tar.gz $x && rm -rf $x;done

(2)在資料夾下搜尋指定檔案,並將輸出結果寫入另乙個檔案中

命令:find . -name "關鍵字*" >> 指定目錄檔案

(3)建立指定目錄,並移動指定檔案到該目錄下

命令:mkdir -p 指定目錄;mv 指定檔案 指定目錄

Linux學習之shell指令碼

第一行 bin bash 標記指令碼的直譯器 指令碼 bin bash echo hello world 賦予執行許可權 chmod x test.sh 執行指令碼 test.sh 定義變數時不需要 符號 td date y m d 1.變數名和符號之間不能有空格 2.首個字元必須為字母 3.中間不...

linux之shell指令碼學習

1,linux的shell種類眾多。shell常見種類如bourne shell usr bin sh或 bin sh bourne again shell bin bash c shell usr bin csh k shell usr bin ksh shell for root sbin sh...

linux之shell指令碼學習(一)

bin bash echo hello your name longxiong echo your name echo for i in ls opt do echo done str 1234 echo unset str echo echo 執行的指令碼為 0 echo 第乙個引數 1 echo...