日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
執(zhí)行Shell腳本(多種方法)
上節(jié)我們編寫了一個簡單的 Shell 腳本,這節(jié)我們就讓它運行起來。運行 Shell 腳本有兩種方法,一種在新進程中運行,一種是在當前 Shell 進程中運行。

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),西疇企業(yè)網(wǎng)站建設(shè),西疇品牌網(wǎng)站建設(shè),網(wǎng)站定制,西疇網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,西疇網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

在新進程中運行 Shell 腳本

在新進程中運行 Shell 腳本有多種方法。

1) 將 Shell 腳本作為程序運行

Shell 腳本也是一種解釋執(zhí)行的程序,可以在終端直接調(diào)用(需要使用 chmod 命令給 Shell 腳本加上執(zhí)行權(quán)限),如下所示:

[mozhiyan@localhost ~]$ cd demo                #切換到 test.sh 所在的目錄
[mozhiyan@localhost demo]$ chmod +x ./test.sh  #給腳本添加執(zhí)行權(quán)限
[mozhiyan@localhost demo]$ ./test.sh           #執(zhí)行腳本文件
Hello World !                                  #運行結(jié)果

第 2 行中,
chmod +x表示給 test.sh 增加執(zhí)行權(quán)限。

第 3 行中,
./表示當前目錄,整條命令的意思是執(zhí)行當前目錄下的 test.sh 腳本。如果不寫
./,Linux 會到系統(tǒng)路徑(由 PATH 環(huán)境變量指定)下查找 test.sh,而系統(tǒng)路徑下顯然不存在這個腳本,所以會執(zhí)行失敗。

通過這種方式運行腳本,腳本文件第一行的
#!/bin/bash一定要寫對,好讓系統(tǒng)查找到正確的解釋器。

2) 將 Shell 腳本作為參數(shù)傳遞給 Bash 解釋器

你也可以直接運行 Bash 解釋器,將腳本文件的名字作為參數(shù)傳遞給 Bash,如下所示:

[mozhiyan@localhost ~]$ cd demo               #切換到 test.sh 所在的目錄
[mozhiyan@localhost demo]$ /bin/bash test.sh  #使用Bash的絕對路徑
Hello World !                                 #運行結(jié)果

通過這種方式運行腳本,不需要在腳本文件的第一行指定解釋器信息,寫了也沒用。

更加簡潔的寫法是運行 bash 命令。bash 是一個外部命令,Shell 會在 /bin 目錄中找到對應(yīng)的應(yīng)用程序,也即 /bin/bash,這點我們已在《Shell命令的本質(zhì)到底是什么》一節(jié)中提到。

[mozhiyan@localhost ~]$ cd demo
[mozhiyan@localhost demo]$ bash test.sh
Hello World !

這兩種寫法在本質(zhì)上是一樣的:第一種寫法給出了絕對路徑,會直接運行 Bash 解釋器;第二種寫法通過 bash 命令找到 Bash 解釋器所在的目錄,然后再運行,只不過多了一個查找的過程而已。

檢測是否開啟了新進程

有些讀者可能會疑問,你怎么知道開啟了新進程?你有什么證據(jù)嗎?既然如此,那我就來給大家驗證一下吧。

Linux 中的每一個進程都有一個唯一的 ID,稱為 PID,使用
$$變量就可以獲取當前進程的 PID。
$$是 Shell 中的特殊變量,稍后我會在《Shell特殊變量》一節(jié)中展開講解,讀者在此不必深究。

首先編寫如下的腳本文件,并命名為 check.sh:

#!/bin/bash
echo $$  #輸出當前進程PID

然后使用以上兩種方式來運行 check.sh:

[mozhiyan@localhost demo]$ echo $$
2861  #當前進程的PID
[mozhiyan@localhost demo]$ chmod +x ./check.sh
[mozhiyan@localhost demo]$ ./check.sh
4597  #新進程的PID
[mozhiyan@localhost demo]$ echo $$
2861  #當前進程的PID
[mozhiyan@localhost demo]$ /bin/bash check.sh
4584  #新進程的PID

你看,進程的 PID 都不一樣,當然就是兩個進程了。

在當前進程中運行 Shell 腳本

這里需要引入一個新的命令——source 命令。source 是 Shell 內(nèi)置命令的一種,它會讀取腳本文件中的代碼,并依次執(zhí)行所有語句。你也可以理解為,source 命令會強制執(zhí)行腳本文件中的全部命令,而忽略腳本文件的權(quán)限。

source 命令的用法為:

source filename

也可以簡寫為:

. filename

兩種寫法的效果相同。對于第二種寫法,注意點號
.和文件名中間有一個空格。

例如,使用 source 運行上節(jié)的 test.sh:

[mozhiyan@localhost ~]$ cd demo              #切換到test.sh所在的目錄
[mozhiyan@localhost demo]$ source ./test.sh  #使用source
Hello World !
[mozhiyan@localhost demo]$ source test.sh    #使用source
Hello World !
[mozhiyan@localhost demo]$ . ./test.sh       #使用點號
Hello World !
[mozhiyan@localhost demo]$ . test.sh         #使用點號
Hello World !

你看,使用 source 命令不用給腳本增加執(zhí)行權(quán)限,并且寫不寫
./都行,是不是很方便呢?

檢測是否在當前 Shell 進程中

我們?nèi)匀唤柚?br /> $$變量來輸出進程的 PID,如下所示:

[mozhiyan@localhost ~]$ cd demo
[mozhiyan@localhost demo]$ echo $$
5169  #當前進程PID
[mozhiyan@localhost demo]$ source ./check.sh
5169  #Shell腳本所在進程PID
[mozhiyan@localhost demo]$ echo $$
5169  #當前進程PID
[mozhiyan@localhost demo]$ . ./check.sh
5169  #Shell腳本所在進程PID

你看,進程的 PID 都是一樣的,當然是同一個進程了。

總結(jié)

作為初學(xué)者,你可能看不懂這些運行方式有什么區(qū)別,沒關(guān)系,暫時先留個疑問吧,后續(xù)教程中我們會逐一講解。

如果需要在新進程中運行 Shell 腳本,我一般使用
bash test.sh這種寫法;如果在當前進程中運行 Shell 腳本,我一般使用
. ./test.sh這種寫法。這是我個人的風格。

最后再給大家演示一個稍微復(fù)雜的例子。本例中使用 read 命令從鍵盤讀取用戶輸入的內(nèi)容并賦值給 URL 變量,最后在顯示器上輸出。

#!/bin/bash
# Copyright (c) http://c.biancheng.net/shell/

echo "What is the url of the shell tutorial?"
read URL
echo "$URL is very fast!"

運行腳本:

[mozhiyan@localhost demo]$ . ./test.sh
What is the url of the shell tutorial?
http://c.biancheng.net/shell/↙
http://c.biancheng.net/shell/ is very fast!

↙ 表示按下回車鍵。


網(wǎng)頁名稱:執(zhí)行Shell腳本(多種方法)
分享鏈接:http://www.5511xx.com/article/dphopec.html