久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

#!/bin/bash

 閱文書苑 2014-07-11
 #!/bin/bash是指此腳本使用/bin/bash來(lái)解釋執(zhí)行,。
其中,#!是一個(gè)特殊的表示符,,其后,,跟著解釋此腳本的shell路徑。
bash只是shell的一種,,還有很多其它shell,,如:sh,csh,ksh,tcsh,...
我們可以通過(guò)以下一個(gè)示例來(lái)進(jìn)行實(shí)驗(yàn),了解#!/bin/bash的使用,。
1)#!/bin/bash只能放在第一行,,如果后面還有#!,那么只能看成是注釋,。
這里有三個(gè)腳本(腳本都要使用”chmod +x  scriptname“命令來(lái)獲得可執(zhí)行權(quán)限):
tbash1.sh:
#!/bin/sh
source abc
echo "hello abc"

tbash2.sh:
#!/bin/bash
source abc
echo "hello abc"

tbash3.sh:
source abc
echo "hello abc"

三個(gè)腳本執(zhí)行的結(jié)果:
[nsvc@localhost other]$ ./tbash1.sh 
./tbash1.sh: line 2: abc: No such file or directory
注:當(dāng)source命令執(zhí)行有問(wèn)題時(shí),,sh不再往下面執(zhí)行。
[nsvc@localhost other]$ ./tbash2.sh 
./tbash2.sh: line 2: abc: No such file or directory
hello abc
注:當(dāng)source命令執(zhí)行有問(wèn)題時(shí),,bash繼續(xù)執(zhí)行下面命令,。
[nsvc@localhost other]$ ./tbash3.sh 
./tbash3.sh: line 1: abc: No such file or directory
hello abc
注:自身登錄系統(tǒng)所在的shell是bash,。所以,當(dāng)source命令執(zhí)行有問(wèn)題時(shí),,bash繼續(xù)執(zhí)行下面命令,。

如果將tbash1.sh改成:
echo "abc"
#!/bin/sh
source abc
echo "hello abc"
那么,執(zhí)行結(jié)果是:
[nsvc@localhost other]$ ./tbash1.sh 
abc
./tbash1.sh: line 3: abc: No such file or directory
hello abc
也就是說(shuō),,腳本忽略了第二行“#!/bin/sh",,直接使用當(dāng)前所在的shell(也就是bash)來(lái)解釋腳本。

當(dāng)把tbash1.sh改成:
#!/bin/sh
#!/bin/bash
source abc
echo "hello abc"
執(zhí)行結(jié)果為:
[nsvc@localhost other]$ ./tbash1.sh 
./tbash1.sh: line 3: abc: No such file or directory
當(dāng)執(zhí)行完source命令時(shí),,并沒(méi)有往下執(zhí)行,。說(shuō)明,#!/bin/sh這一行起到作用了,,但#!/bin/bash并沒(méi)有起作用,。在腳本中,不在第一行的#!/bin/bash,,只是一個(gè)注釋,。

2)#!后面的路徑一定要正確,不正確會(huì)報(bào)錯(cuò),。
假如,,我們把tbash1.sh中第一行的#!后面加了一個(gè)不存在的路徑”/home/sh“:
#!/home/sh
source abc
echo "hello abc"
執(zhí)行結(jié)果為:
[nsvc@localhost other]$ ./tbash1.sh 
-bash: ./tbash1.sh: /home/sh: bad interpreter: No such file or directory
系統(tǒng)會(huì)提示/home/sh的路徑不存在。

3)如果一個(gè)腳本在第一行沒(méi)有加上#!+shell路徑這一行,,那么,,腳本會(huì)默認(rèn)當(dāng)前用戶登錄的shell,,為腳本解釋器,。
在1)中,腳本tbash3.sh的執(zhí)行結(jié)果,,就是用當(dāng)前自己登錄的shell(bash)解釋后的結(jié)果,。我們通常所用的shell都是bash,如果哪天登錄到sh,,再使用以上類型的腳本,,就會(huì)有問(wèn)題。以下是自己登錄到sh下,,執(zhí)行tbash3.sh的結(jié)果:
-sh-3.2$ ./tbash3.sh 
./tbash3.sh: line 1: abc: 沒(méi)有那個(gè)文件或目錄
與1)中的執(zhí)行結(jié)果是不一樣的,。
因此,大家應(yīng)該養(yǎng)成腳本首行加上#!+shell路徑的習(xí)慣,。

4)/bin/sh相當(dāng)于/bin/bash --posix
我們將腳本tbash1.sh改為:
#!/bin/bash --posix
source abc
echo "hello abc"
執(zhí)行結(jié)果:
[nsvc@localhost other]$ ./tbash1.sh 
./tbash1.sh: line 2: abc: No such file or directory
與tbash1.sh原腳本執(zhí)行的結(jié)果一樣,。

我們還可以以tbash3.sh為示例。
用以下命令來(lái)執(zhí)行該腳本:
[nsvc@localhost other]$ bash tbash3.sh
tbash3.sh: line 1: abc: No such file or directory
hello abc
[nsvc@localhost other]$ sh tbash3.sh 
tbash3.sh: line 1: abc: No such file or directory
[nsvc@localhost other]$ bash --posix tbash3.sh 
tbash3.sh: line 1: abc: No such file or directory
 "bash tbash3.sh"表示使用bash來(lái)作為腳本解釋器來(lái)執(zhí)行tbash3.sh,。同樣,,也可以使用如”sh 腳本名“這樣的命令,,來(lái)用sh作為腳本解釋器。
從結(jié)果可以看出,,/bin/bash --posix與/bin/sh的執(zhí)行結(jié)果相同,。總結(jié)起來(lái),,sh跟bash的區(qū)別,,實(shí)際上是bash有沒(méi)開(kāi)啟posix模式的區(qū)別。遵守posix規(guī)范,,可能包括,,”當(dāng)某行代碼出錯(cuò)時(shí),不繼續(xù)往下執(zhí)行,?!?/div>

最后加上一點(diǎn)說(shuō)明,每個(gè)腳本開(kāi)頭都使用"#!",,#!實(shí)際上是一個(gè)2字節(jié)魔法數(shù)字,,這是指定一個(gè)文件類型的特殊標(biāo)記,在這種情況下,,指的就是一個(gè)可執(zhí)行的腳本,。在#!之后,接一個(gè)路徑名,,這個(gè)路徑名指定了一個(gè)解釋腳本命令的程序,,這個(gè)程序可以是shell,程序語(yǔ)言或者任意一個(gè)通用程序,。

總結(jié)起來(lái),,要規(guī)規(guī)舉舉地按照秩序行。

耶穌愛(ài)你,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多