shell腳本執行命令語句「shell腳本執行linux命令大全」

1. 概述

Shell是一個命令行解釋器,它為用戶提供了一個向Linux內核發送請求以便運行程序的界面系統級程序,用戶可以用Shell來啟動、掛起、停止甚至是編寫一些程序。

大數據技術基礎篇Linux中Shell編程概述與運用

Shell還是一個功能相當強大的編程語言,易編寫、易調試、靈活性強。Shell是解釋執行的腳本語言,在Shell中可以調用Linux系統命令。

2. Shell腳本的執行方式

1)腳本格式

(1)腳本以#!/bin/bash開頭

(2)腳本必須有可執行權限

2)第一個Shell腳本

(1)需求:創建一個Shell腳本,輸出helloworld

(2)實操:

[atguigu@hadoop101 datas]$ touch helloworld.sh[atguigu@hadoop101 datas]$ vi helloworld.sh在helloworld.sh中輸入如下內容#!/bin/bashecho 「helloworld」

3)腳本的常用執行方式

第一種:輸入腳本的絕對路徑或相對路徑

(1)首先要賦予helloworld.sh 腳本的+x權限

[atguigu@hadoop101 datas]$ chmod 777 helloworld.sh

(2)執行腳本

/root/helloWorld.sh

./helloWorld.sh

第二種:bash或sh+腳本(不用賦予腳本+x權限)

sh /root/helloWorld.sh

sh helloWorld.sh

3. Shell中的變量

1)Linux Shell中的變量分為,系統變量和用戶自定義變量。

2)系統變量:$HOME、$PWD、$SHELL、$USER等等

3)顯示當前shell中所有變量:set

3.1 定義變量

1)基本語法:

(1)定義變量:變量=值

(2)撤銷變量:unset 變量

(3)聲明靜態變量:readonly變量,注意:不能unset

2)變量定義規則0

(1)變量名稱可以由字母、數字和下劃線組成,但是不能以數字開頭。

(2)等號兩側不能有空格

(3)變量名稱一般習慣為大寫

3)案例實操

(1)定義變量A

A=8

(2)撤銷變量A

unset A

(3)聲明靜態的變量B=2,不能unset

readonly B=2

(4)可把變量提升為全局環境變量,可供其他shell程序使用

export 變量名

3.2 將命令的返回值賦給變量

1)A=`ls -la` 反引號,運行裏面的命令,並把結果返回給變量A

2)A=$(ls -la) 等價於反引號

3.3 設置環境變量

1)基本語法:

(1)export 變量名=變量值 (功能描述:將shell變量輸出為環境變量)

(2)source 配置文件 (功能描述:讓修改後的配置信息立即生效)

(3)echo $變量名 (功能描述:查詢環境變量的值)

2)案例實操:

(1)在/etc/profile文件中定義JAVA_HOME環境變量

export JAVA_HOME=/opt/module/jdk1.8.0_144

export PATH=$PATH:$JAVA_HOME/bin

(2)查看環境變量JAVA_HOME的值

[atguigu@hadoop101 datas]$ echo $JAVA_HOME

/opt/module/jdk1.8.0_144

3.4 位置參數變量

1)基本語法

$n (功能描述:n為數字,$0代表命令本身,$1-$9代表第一到第九個參數,十以上的參數,十以上的參數需要用大括號包含,如${10})

$* (功能描述:這個變量代表命令行中所有的參數,$*把所有的參數看成一個整體)

$@ (功能描述:這個變量也代表命令行中所有的參數,不過$@把每個參數區分對待)

$# (功能描述:這個變量代表命令行中所有參數的個數)

2)案例實操

(1)輸出輸入的的參數1,參數2,所有參數,參數個數

#!/bin/bashecho 「$0 $1 $2」echo 「$*」echo 「$@」echo 「$#」

(3)$*與$@的區別

#!/bin/bashfor i in 「$*」#$*中的所有參數看成是一個整體,所以這個for循環只會循環一次doecho 「The parameters is: $i」donex=1for y in 「$@」#$@中的每個參數都看成是獨立的,所以「$@」中有幾個參數,就會循環幾次doecho 「The parameter$x is: $y」x=$(( $x +1 ))done

a)$*和$@都表示傳遞給函數或腳本的所有參數,不被雙引號「」包含時,都以$1 $2 …$n的形式輸出所有參數

b)當它們被雙引號「」包含時,「$*」會將所有的參數作為一個整體,以「$1 $2 …$n」的形式輸出所有參數;「$@」會將各個參數分開,以「$1」 「$2」…」$n」的形式輸出所有參數

3.5 預定義變量

1)基本語法:

$? (功能描述:最後一次執行的命令的返回狀態。如果這個變量的值為0,證明上一個命令正確執行;如果這個變量的值為非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確了。)

$$ (功能描述:當前進程的進程號(PID))

$! (功能描述:後台運行的最後一個進程的進程號(PID))

2)案例實操

#!/bin/bashecho 「$$」./helloworld.sh &echo 「$!」echo 「$?」

4. 運算符

1)基本語法:

(1)「$((運算式))」或「$[運算式]」

(2)expr m + n

注意expr運算符間要有空格

(3)expr m – n

(4)expr *, /, % 乘,除,取余

2)案例實操:計算(2+3)X4的值

(1)採用$[運算式]方式

[root@hadoop101 datas]# S=$[(2+3)*4]

[root@hadoop101 datas]# echo $S

(2)expr分佈計算

S=`expr 2 + 3`

expr $S * 4

(3)expr一步完成計算

expr `expr 2 + 3` * 4

大數據技術基礎篇Linux中Shell編程概述與運用

5. 條件判斷

5.1 判斷語句

1)基本語法:

[ condition ](注意condition前後要有空格)

#非空返回true,可使用$?驗證(0為true,>1為false)

2)案例實操:

[atguigu] 返回true

[] 返回false

[condition] && echo OK || echo notok 條件滿足,執行後面的語句

5.2 常用判斷條件

1)兩個整數之間比較

= 字符串比較

-lt 小於

-le 小於等於

-eq 等於

-gt 大於

-ge 大於等於

-ne 不等於

2)按照文件權限進行判斷

-r 有讀的權限

-w 有寫的權限

-x 有執行的權限

3)按照文件類型進行判斷

-f 文件存在並且是一個常規的文件

-e 文件存在

-d 文件存在並是一個目錄

4)案例實操

(1)23是否大於等於22

[ 23 -ge 22 ]

(2)student.txt是否具有寫權限

[ -w student.txt ]

(3)/root/install.log目錄中的文件是否存在

[ -e /root/install.log ]

6. 流程控制

6.1 if 判斷

1)基本語法:

if [ 條件判斷式 ];then

程序

fi

或者

if [ 條件判斷式 ]

then

程序

fi

注意事項:(1)[ 條件判斷式 ],中括號和條件判斷式之間必須有空格

2)案例實操

#!/bin/bashif [ $1 -eq 「123」 ]thenecho 「123」elif [ $1 -eq 「456」 ]thenecho 「456」fi

6.2 case 語句

1)基本語法:

case $變量名 in

「值1″)

如果變量的值等於值1,則執行程序1

;;

「值2″)

如果變量的值等於值2,則執行程序2

;;

…省略其他分支…

*)

如果變量的值都不是以上的值,則執行此程序

;;

esac

2)案例實操

!/bin/bashcase $1 in「1」)echo 「1」;;「2」)echo 「2」;;*)echo 「other」;;esac

6.3 for 循環

1)基本語法1:

for 變量 in 值1 值2 值3…

do

程序

done

2)案例實操:

(1)打印輸入參數

#!/bin/bash#打印數字for i in 「$*」doecho 「The num is $i 「donefor j in 「$@」doecho 「The num is $j」done

3)基本語法2:

for (( 初始值;循環控制條件;變量變化 ))

do

程序

done

4)案例實操

(1)從1加到100

#!/bin/bashs=0for((i=0;i<=100;i++))dos=$[$s+$i]doneecho 「$s」

6.4 while 循環

1)基本語法:

while [ 條件判斷式 ]

do

程序

done

2)案例實操

(1)從1加到100

#!/bin/bashs=0i=1while [ $i -le 100 ]dos=$[$s+$i]i=$[$i+1]doneecho $s

7. read讀取控制台輸入

1)基本語法:

read(選項)(參數)

選項:

-p:指定讀取值時的提示符;

-t:指定讀取值時等待的時間(秒)。

參數

變量:指定讀取值的變量名

2)案例實操

讀取控制台輸入的名稱

#!/bin/bashread -t 7 -p 「please 7 miao input your name 」 NAMEecho $NAME

8 函數

8.1 系統函數

1)basename基本語法

basename [pathname] [suffix]

basename [string] [suffix] (功能描述:basename命令會刪掉所有的前綴包括最後一個(『/』)字符,然後將字符串顯示出來。

選項:

suffix為後綴,如果suffix被指定了,basename會將pathname或string中的suffix去掉。

2)案例實操

[atguigu@hadoop101 opt]$ basename /opt/test.txt

test.txt

[atguigu@hadoop101 opt]$ basename /opt/test.txt .txt

test

3)dirname基本語法

dirname 文件絕對路徑 (功能描述:從給定的包含絕對路徑的文件名中去除文件名(非目錄的部分),然後返回剩下的路徑(目錄的部分))

4)案例實操

[atguigu@hadoop101 opt]$ dirname /opt/test.txt

/opt

8.2 自定義函數

1)基本語法:

[ function ] funname[()]{Action;[return int;]}funname

2)經驗技巧:

(1)必須在調用函數地方之前,先聲明函數,shell腳本是逐行運行。不會像其它語言一樣先編譯。

(2)函數返回值,只能通過$?系統變量獲得,可以顯示加:return返回,如果不加,將以最後一條命令運行結果,作為返回值。return後跟數值n(0-255)

3)案例實操

(1)計算輸入參數的和

#!/bin/bashfunction sum(){s=0s=$[ $1 + $2 ]echo 「$s」}read -p 「Please input the number1: 」 n1;read -p 「Please input the number2: 」 n2;sum $n1 $n2;

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/275287.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-17 14:20
下一篇 2024-12-17 14:20

相關推薦

發表回復

登錄後才能評論