欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux中執(zhí)行Shell腳本的三種實(shí)現(xiàn)方式

 更新時(shí)間:2023年11月24日 16:52:24   作者:timchen525  
這篇文章主要介紹了Linux中執(zhí)行Shell腳本的三種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Shell 腳本的執(zhí)行方式通常有

如下三種

  • (1)bash script-name 或者 sh script-name;
  • (2)path/script-name或者./script-name;
  • (3)sourcescript-name或者. script-name。

下面,分別介紹下這三種方式的特點(diǎn):

(1)bash script-name或者sh script-name

這是當(dāng)腳本文件本身沒(méi)有可執(zhí)行權(quán)限(即文件權(quán)限屬性x位為-號(hào))時(shí)常使用的方法,或者腳本文件開(kāi)頭沒(méi)有指定解釋器時(shí)需要使用的方法。

推薦使用這種方法。

(2)path/script-name或者./script-name

指在當(dāng)前路徑下執(zhí)行腳本(腳本需要有執(zhí)行權(quán)限),需要將腳本文件的權(quán)限改為可執(zhí)行(即文件權(quán)限屬性為x位)。

具體方法為:chmod a+x script-name。然后通過(guò)執(zhí)行腳本絕對(duì)路徑或者相對(duì)路徑就可以執(zhí)行腳本了。

注意:

  • 在生產(chǎn)環(huán)境中,運(yùn)維人員由于忘記為該腳本設(shè)置可執(zhí)行權(quán)限,然后直接使用,導(dǎo)致出錯(cuò)。
  • 因此,推薦第一種 bashscript-name。

(3)source script-name或者. script-name

source或者“.”命令的功能是:讀入腳本并執(zhí)行腳本,即在當(dāng)前Shell中執(zhí)行source或“.”加載并執(zhí)行的相關(guān)腳本文件的命令及語(yǔ)句,而不是產(chǎn)生一個(gè)子Shell來(lái)執(zhí)行文件中的命令。

注意:這是和其他幾種執(zhí)行shell方式的最大不同。

舉個(gè)栗子

新建一個(gè)文件test_sh.sh,不給它賦予任何可執(zhí)行的權(quán)限x。

編輯內(nèi)容如下:

文件以及文件中內(nèi)容與常見(jiàn)的shell不同之處在于,這里的文件沒(méi)有賦予可執(zhí)行權(quán)限以及在文件內(nèi)容中的首行中沒(méi)有添加#!/bin/bash。

我們現(xiàn)在用上述介紹的幾種方式來(lái)測(cè)試下效果。

第二種方式 ./script-name,執(zhí)行效果如下:

報(bào)權(quán)限拒絕,Permission denied,此時(shí),我們只要更改文件的屬性為可執(zhí)行即可。

執(zhí)行第一種bash script-name,效果如下:

可以成功執(zhí)行,輸出:hello。但是,我們輸入命令:echo $name,發(fā)現(xiàn)如下:

name的值是空的。

不難理解,bash script-name是產(chǎn)生了一個(gè)子進(jìn)程shell,而我們當(dāng)前的操作還在父shel中因此得不到該變量值。

執(zhí)行第三種方法. test_sh.sh,效果如下:

可以成功的輸出變量的值。

這是因?yàn)閟ource script-name和. script-name是將script-name中的內(nèi)容直接加載到當(dāng)前的shell,因此能夠輸出當(dāng)前變量的值。

剛才第二種方式我們執(zhí)行失敗,現(xiàn)在我們通過(guò)chmod a+x script-name,然后再次執(zhí)行上述命令,查看效果:

注意:該種方式也是產(chǎn)生了一個(gè)子進(jìn)程Shell,因此echo $name仍然找不到該變量。

補(bǔ)充知識(shí)點(diǎn)

一個(gè)規(guī)范的Shell腳本在第一行會(huì)指出由哪個(gè)程序(解釋器)來(lái)執(zhí)行腳本中的內(nèi)容,這一行內(nèi)容在Linux bash的編程一般為:

#!/bin/bash

#!/bin/sh

注意:

(1)在Shell中如果一行的第一個(gè)字母是#,則是注釋?zhuān)巧厦鎯蓚€(gè)是寫(xiě)在第一行,所以不是腳本注釋行,如果寫(xiě)在某個(gè)命令之后,則變成注釋行。

(2)sh為bash的軟鏈接,大多數(shù)情況下,腳本的開(kāi)頭使用“#!/bin/bash”和“#!/bin/sh”是沒(méi)有區(qū)別的,但更規(guī)范的寫(xiě)法是在腳本的開(kāi)頭使用“#!/bin/bash”。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Linux系統(tǒng)配置(服務(wù)控制)詳細(xì)介紹

    Linux系統(tǒng)配置(服務(wù)控制)詳細(xì)介紹

    大家好,本篇文章主要講的是Linux系統(tǒng)配置(服務(wù)控制)詳細(xì)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Apache開(kāi)啟并實(shí)現(xiàn)網(wǎng)站偽靜態(tài)化的方法

    Apache開(kāi)啟并實(shí)現(xiàn)網(wǎng)站偽靜態(tài)化的方法

    Apache的Mod_Rewrite對(duì)URL進(jìn)行重寫(xiě),實(shí)現(xiàn)網(wǎng)站偽靜態(tài)化,這里就為大家介紹一下
    2022-08-08
  • 使用VMware虛擬機(jī)安裝Linux(CentOS7鏡像)

    使用VMware虛擬機(jī)安裝Linux(CentOS7鏡像)

    這篇文章介紹了使用VMware虛擬機(jī)安裝Linux(CentOS7鏡像)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • VirtualBox 未指定要bridged的網(wǎng)絡(luò)界面的解決辦法

    VirtualBox 未指定要bridged的網(wǎng)絡(luò)界面的解決辦法

    這篇文章主要介紹了VirtualBox 未指定要bridged的網(wǎng)絡(luò)界面的解決辦法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家解決遇到這樣的問(wèn)題,需要的朋友可以參考下
    2017-10-10
  • iptables做策略屏蔽QQ與MSN

    iptables做策略屏蔽QQ與MSN

    QQ服務(wù)器端口為:8000;客戶端端口為:4000(開(kāi)啟第二個(gè)QQ時(shí)為4001,依次類(lèi)推);均為UDP.MSN端口數(shù)較多:1863為登陸所需要的端口以及3000-4000等等
    2013-04-04
  • vim編輯器常用命令總結(jié)

    vim編輯器常用命令總結(jié)

    這篇文章介紹了vim編輯器的常用命令,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • apache在win2003下的安全設(shè)置(配合文件夾權(quán)限目錄,很好很安全)

    apache在win2003下的安全設(shè)置(配合文件夾權(quán)限目錄,很好很安全)

    眾所周知,在windows下當(dāng)Apache第 一次被安裝為服務(wù)后,它會(huì)以用戶“System”(本地系統(tǒng)賬號(hào))運(yùn)行。如果web服務(wù)器的所有資源都在本地系統(tǒng)上,這樣做會(huì)問(wèn)題比較少,但是將會(huì)具有很 大的安全 權(quán)限來(lái)影響本地機(jī)器,因此千萬(wàn)不能開(kāi)啟System帳號(hào)的網(wǎng)絡(luò)權(quán)限
    2012-01-01
  • 關(guān)于CentOS 7下sqlite3找不到的問(wèn)題解決

    關(guān)于CentOS 7下sqlite3找不到的問(wèn)題解決

    這篇文章主要給大家介紹了關(guān)于CentOS 7下sqlite3找不到問(wèn)題的解決方法,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07
  • Ubuntu無(wú)網(wǎng)絡(luò)標(biāo)識(shí)的問(wèn)題及解決

    Ubuntu無(wú)網(wǎng)絡(luò)標(biāo)識(shí)的問(wèn)題及解決

    這篇文章主要介紹了Ubuntu無(wú)網(wǎng)絡(luò)標(biāo)識(shí)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Linux解壓JAR包 查看class內(nèi)容方式

    Linux解壓JAR包 查看class內(nèi)容方式

    這篇文章主要介紹了Linux解壓JAR包 查看class內(nèi)容方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評(píng)論