【exec】shell腳本中的 exec 命令

exec 是 bash 的內(nèi)置命令

shell 的內(nèi)件命令exec執(zhí)行命令時,不啟用新的shell進(jìn)程橙垢。

source 和 .?不啟用新的shell垛叨,在當(dāng)前shell中執(zhí)行,設(shè)定的局部變量在執(zhí)行完命令后仍然有效柜某。

bash 或 sh 或 shell script 執(zhí)行時嗽元,另起一個子shell,其繼承父shell的環(huán)境變量喂击,其子shelll的變量執(zhí)行完后不影響父shell剂癌。

exec是用被執(zhí)行的命令行替換掉當(dāng)前的shell進(jìn)程,且exec命令后的其他命令將不再執(zhí)行翰绊。

例如在當(dāng)前shell中執(zhí)行 exec ls ?表示執(zhí)行l(wèi)s這條命令來替換當(dāng)前的shell 佩谷,即為執(zhí)行完后會退出當(dāng)前shell旁壮。

為了避免這個結(jié)果的影響,一般將exec命令放到一個shell腳本中谐檀,用主腳本調(diào)用這個腳本抡谐,調(diào)用處可以用bash? xx.sh(xx.sh為存放exec命令的腳本),這樣會為xx.sh建立一個子shell去執(zhí)行稚补,當(dāng)執(zhí)行exec后該子腳本進(jìn)程就被替換成相應(yīng)的exec的命令。

其中有一個例外:當(dāng)exec命令對文件描述符操作的時候框喳,就不會替換shell课幕,而是操作完成后還會繼續(xù)執(zhí)行后面的命令!


在shell腳本中使用exec命令五垮,根據(jù)操作的對象不同會有不同的行為

文件描述符

shell中描述符一共有12個

0 ?代表標(biāo)準(zhǔn)輸入

1 ?代表標(biāo)準(zhǔn)輸出

2 ?錯誤輸出

其他 3-9 都是空白描述符

# ?exec3>&1?4>&2?1>>?bash.log?2>&1

其含義是: 復(fù)制標(biāo)準(zhǔn)輸出到3 乍惊,錯誤輸出到 4 ,把 3 4 保存在bash.log 這個文件中放仗。

# ?./bash.sh ?>> bash.log ? 2>&1

其含義是:將bash.sh腳本執(zhí)行的標(biāo)準(zhǔn)輸出和錯誤輸出追加重定向到 bash.log

如果exec 跟的是其他命令润绎,則其他命令結(jié)束后,本shell也隨之停止

# ?cat test_exec.sh

###################

#!/bin/bash ?

#?

echo "Hello mysql" ?

exec echo "Hello oracle" ?

echo "Hello sqlserver"

####################

可以看到隨著 echo " hello oracle" ?這條指令運行完本 整個腳本執(zhí)行完畢诞挨,后面的 echo " hello db2" 沒有執(zhí)行莉撇!

Linux shell 腳本中, $@ 和$# 分別是什么意思惶傻?

$@ ?表示所有腳本參數(shù)的內(nèi)容

$# 表示返回所有腳本參數(shù)的個數(shù)

示例:編寫如下shell腳本棍郎,保存為test.sh

###############

#!/bin/sh

echo "number:$#"

echo "argume:$@"

###############

執(zhí)行腳本:

./test.sh?first_arg ?second_arg

說明:給腳本提供了兩個參數(shù),所以$#輸出的結(jié)果是2银室,$@代表了參數(shù)的內(nèi)容涂佃!

怎么理解shell腳本中 ?exec?"`dirname "$0"`/node""$0" ?"$@" ?

$0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? # 腳本自己的路徑

"`dirname "$0"`"/node ? ?# 腳本目錄下的node程序的路徑

$@ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 腳本被執(zhí)行時的命令行參數(shù)

合起來就是:用腳本目錄下的node程序來解釋這個腳本本身

exec scala "$0" "$@"是什么意思

這是bash語法蜈敢。

$0 ?表示當(dāng)前腳本的名字

$@ ?表示當(dāng)前腳本執(zhí)行的所有參數(shù)

exec scala "$0" "$@" ? ?表示用scala命令辜荠,帶參數(shù),執(zhí)行當(dāng)前腳本

exec ?sh "$0 ?在這個文件里抓狭,exec sh ?$0是什么意思伯病?

############

#!/bin/sh

echo ?"Hello!"

sleep 2

execsh?"$0"

#############

$0 ? 是位置參數(shù),表示腳本名稱

$1 ? 表示腳本的第一個參數(shù)否过,依次類推直到$9

exec用于執(zhí)行命令狱从、或腳本、或外部可執(zhí)行程序叠纹,會新建一個shell去執(zhí)行

綜上季研,這里exec sh ?"$0" ?就是執(zhí)行腳本本身

所以,就是一個循環(huán)過程,每隔兩秒打印一次 Hello

#############

#!/bin/sh

echo ?"Hello!"

sleep 2

exec ??"$0"

#############

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末誉察,一起剝皮案震驚了整個濱河市与涡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖驼卖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氨肌,死亡現(xiàn)場離奇詭異,居然都是意外死亡酌畜,警方通過查閱死者的電腦和手機(jī)怎囚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桥胞,“玉大人恳守,你說我怎么就攤上這事》废海” “怎么了催烘?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缎罢。 經(jīng)常有香客問我伊群,道長,這世上最難降的妖魔是什么策精? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任舰始,我火速辦了婚禮,結(jié)果婚禮上咽袜,老公的妹妹穿的比我還像新娘蔽午。我一直安慰自己,他們只是感情好酬蹋,可當(dāng)我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布及老。 她就那樣靜靜地躺著,像睡著了一般范抓。 火紅的嫁衣襯著肌膚如雪骄恶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天匕垫,我揣著相機(jī)與錄音僧鲁,去河邊找鬼。 笑死象泵,一個胖子當(dāng)著我的面吹牛寞秃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播偶惠,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼春寿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了忽孽?” 一聲冷哼從身側(cè)響起绑改,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谢床,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后厘线,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體识腿,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年造壮,在試婚紗的時候發(fā)現(xiàn)自己被綠了渡讼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡耳璧,死狀恐怖成箫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情楞抡,我是刑警寧澤伟众,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布析藕,位于F島的核電站召廷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏账胧。R本人自食惡果不足惜竞慢,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望治泥。 院中可真熱鬧筹煮,春花似錦、人聲如沸居夹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽准脂。三九已至劫扒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間狸膏,已是汗流浹背沟饥。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留湾戳,地道東北人贤旷。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像砾脑,于是被迫代替她去往敵國和親幼驶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,392評論 0 5
  • 什么是運維 術(shù)語名詞 IDC--(Internet Data Center)互聯(lián)網(wǎng)數(shù)據(jù)中心糜颠,主要服務(wù)包括整機(jī)租用、...
    lyh165閱讀 2,707評論 0 19
  • 內(nèi)容一:Shell腳本語言-管道萧求? ?分析場景:有的時候我們需要一個命令的輸出作為另外一個命令輸入其兴? ?? ?語法...
    Jackey_song閱讀 443評論 0 1
  • .bat腳本基本命令語法 目錄 批處理的常見命令(未列舉的命令還比較多,請查閱幫助信息) 1夸政、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,102評論 1 19
  • 2017年5月3日 還記得參加高考那一年是2011年元旬; 時間一下就過去了6年了,今天偶然間踩著單車經(jīng)過這里守问。這里依...
    大杯美年達(dá)閱讀 207評論 0 0