Linux入門之Shell指令碼基礎

2021-08-14 21:46:20 字數 4015 閱讀 9625

shell基本元素

(1)#! /bin/bash 必須的,指出shell的型別

(2)# 注釋

(3)變數

(4)控制

乙個shell指令碼

vi  mkdir.sh

#!/bin/bash

# this is mkdir

cd /home

mkdir shelltest

echo "shelltest  is created."

1.echo命令用於在螢幕上顯示訊息

使用方式:echo 要顯示的內容

2.#用於在shell指令碼中進行注釋

shell的一般結構

shell 型別

函式主過程

一般模板  abc.sh

#! /bin/bash                           shell型別

#a ****** shell script example

#a function

sayhello()                函式

echo "programme starts here..."  主過程

sayhello

echo "programme ends."

shell中的特殊符號

1、注釋符# 

除了#!/bin/bash裡的#特殊

2、美元符 $

變數符。與反斜槓轉義符相反,使其後的普通字元作為變數名,如$a表示變數a的值。變數字元長度超過1個時,用{}括起來

3、單引號

被引起的字元全部做普通字元,即全部原樣

echo 『my $shell』

4、雙引號

引號內的內容,除$、轉義符\、倒引號`這三個保留特殊功能,其他字元均做普通字元。

5、倒引號(數字1鍵旁邊的那個鍵)

引號內的字串當做shell命令列解釋執行,得到的結果取代整個倒引號括起來的部分。

`pwd`             即pwd命令的執行結果

$logname        系統變數

區別下面幾句:

echo 『my home is $home』

echo 「my home is $home」

echo  `my home is $home`

echo 「my home is `pwd`」

echo 『my home is `pwd`』

6. 反斜線

反斜線是轉義字元,它能把特殊字元變成普通字元。在某個字元前面利用反斜槓(\)能夠阻止shell把後面的字元解釋為特殊字元。、

echo  「filename  is  n0\$\`」 變數

建立變數

1、可以在任何時間通過簡單的賦值來建立變數

語法:=

shell中的所有變數都被當作字串

2、引用變數

$符號用於引用乙個變數的內容

variable1=$

3、在執行shell指令碼時,shell還允許使用者從鍵盤中輸入乙個值給變數。可以使用read命令來做。

read fname

命令替換

1、在單個命令列中使用多個命令的乙個方法是通過命令替換

例:echo "the date is `date`"

2、expr命令:用於求值算術表示式。該命令輸出被傳送到標準輸出

例:expr 4+5  將在螢幕上顯示9 

3、可以在$((...))中包括乙個表示式,用下面的命令來計算它的值:

$((表示式))

實驗:編寫乙個簡單的四則計算器

echo "please enter the first number."

read totalqueries

echo "please enter the second number."

read answered

echo "please enter the operation."

read opt

result=$((totalqueries $opt answered))

echo "the result of $totalqueries $opt $answered=$result"

條件判斷命令

test n1 -引數 n2          (或 –引數 表示式)

[ n1 -引數 n2 ]

真返回0,假返回1。

引數:-lt 小於

-le小於等於

-gt  大於

-ge 大於等於

-eq 等於

-ne 不等於

·test語句的等價形式[ 1 –lt 4 ]

可用中括號代替test,把表示式括起來實現判斷

注意表示式與中括號間有空格。

test 1 –lt 4  #判斷1<4

echo $?        #結果為0

檔案測試

-f 存在且是普通檔案

-d 存在且是目錄

-s 存在且位元組數大於0

-r 存在且可讀

-w 存在且可寫

-x 存在且可執行

如:test -d 「mydoc」  [ -d "mydoc" ]

判斷mydoc是否是目錄

eg:檢測從命令列輸入的檔案是否存在

if [ $# -ne 1 ]

then 

echo "usage -$0 file-name"

exit 1

fiif [ -f $s1 ]

字串測試

test s      字串s非空

test s1=s2  字串s1等於s2

test s1!=s2 字串s1不等於s2 

test  -z  s         字串長=0,即為空串

test -n s   字串長》0

=: 等於則為真

!=:不相等則為真

-z字串:字串長度為零則為真

-n字串:字串長度不為零則為真

分支語句

if [ $# -eq 0 ]

then

echo 「輸入了0個引數」

elif [ $# -gt 1 ]

then 

echo 「輸入了多個引數」

else 

echo 「輸入了1個引數」fi

case 「$#」 in

0) echo 「輸入了0個引數」 ;;

1) echo 「輸入了1個引數」 ;;

*) echo 「輸入了多個引數」;; 

esac

每個分支條件後必須以兩個分號結尾

迴圈語句

只有條件為真時,就執行do和done之前的命令

while 《條件》

do 《命令(s)>

done

while例子——求1到100的和

declare -i i=1

sum=0

while [ $i –le 100 ]

dosum=$[$sum+$i]

i=$[$i+1]

done

echo $sum

for迴圈取一列值作為輸入並對迴圈中每個值執行迴圈

for variable_name in

do...

done

for i in `seq 1  9`

doecho `expr $i \* 10` 

done

或寫 echo $(expr $i \* 10)

乘號前加轉義符,與數字間要有空格。

read變數

read 變數1 [變數2 …]

可以從鍵盤上讀取多個變數的值,使用者輸入資料時,以空格或者tab鍵作為分隔。

如果輸入的資料個數不夠,則從左到右對應賦值,沒有輸入的變數為空;

如果輸入的資料個數超了,則從左到右對應賦值,最後乙個變數被賦予剩餘的所有資料。

輸出a到b序列數各數的10倍數

read a b

for i in `seq $a $b`

doecho `expr $i \* 10`

done

shell指令碼 之入門

who 可以檢視現在系統有誰登入。who wc l 計算使用者的個數 cat filename 建立檔案,使用cat複製終端的內容到filename 檔案中 context 在終端中輸入的內容 d ctrl d表示end of file cat filename 檢視filename檔案中的內容,將...

Linux之shell指令碼

1.shell是系統的使用者介面,提供了使用者與核心進行互動操作的一種介面。它接收使用者輸入的命令並把它送入核心去執行。2.每個linux系統的使用者可以擁有他自己的使用者介面或shell,用以滿足他們自己專門的shell需要。同linux本身一樣,shell也有多種不同的版本 比如bash或sh ...

linux之shell指令碼

shell 是指一種應用程式,這個應用程式提供了乙個介面,使用者通過這個介面訪問作業系統核心的服務,是指令碼中命令的直譯器。1 記錄命令執行的過程和執行邏輯,以便以後重複執行 2 指令碼可以批量處理主機 3 指令碼可以定時處理主機。bin bash 幻數 指令碼執行的直譯器,最優先執行vim自動新增...