指令碼的開頭(第一行):
規範的指令碼在指令碼的第一行會指出由哪個程式(直譯器)來執行指令碼中的內容在linux bash的程式設計中一般為:『#!』被稱為幻數,用來指出執行指令碼所用的直譯器,並且此行必須用在第一行,若不是指令碼第一行則其就是注釋行sh與bash的區別:
#!/bin/bash
或 #!/bin/sh
[root@localhost shell]# ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 jan 15 2016 /bin/sh -> bash
[root@localhost shell]# ll /bin/bash
-rwxr-xr-x. 1 root root 960368 jan 29 2014 /bin/bash
[root@localhost shell]#
sh為bash的軟連線,但又有區別;
當使用/bin/sh執行指令碼不正常的時候,可以使用/bin/bash執行
也可以不加#!/bin/bash,是因為linux系統預設/bin/bash
指令碼的注釋:
在shell指令碼中,跟在(#)號後面的內容表示注釋,用來對指令碼進行解釋說明;shell指令碼的執行:注釋可以自成一行,也可以跟在指令碼命令後面與命令在同一行。
在執行shell指令碼之前,它會先載入系統環境變數env(該變數指定了環境檔案,通常是 .bashrc , .bash_profile , /etc/bashrc , /etc/profile等),然後執行指令碼。shell指令碼的執行方式:<1>bash script-name 或 sh script-name(推薦使用)特殊:設定定時任務時,最好把系統環境變數在定時任務指令碼中重新定義,否則,一些系統環境變數將不被載入
該方法是當指令碼檔案本身沒有可執行許可權時,或者檔案開頭沒有指定直譯器時常使用的方法
[root@localhost
shell]# vim test.sh
[root@localhost
shell]# cat test.sh
echo 'hello world'
[root@localhost
shell]# sh test.sh
hello world
[root@localhost
shell]#
[root@localhost
shell]# cat >test1.sh //用cat向檔案中寫內容
echo 'ni hao, ming tian'
^c[root@localhost
shell]# cat test1.sh
echo 'ni hao, ming tian'
[root@localhost
shell]# /bin/sh test1.sh
ni hao, ming tian
[root@localhost
shell]# /bin/bash test1.sh
ni hao, ming tian
[root@localhost
shell]#
<2>path/script-name 或 ./script-name(當前路徑下執行指令碼)
該方式需要指令碼有執行許可權
[root@localhost shell]# ll
total 8
-rw-r--r-- 1 root root 25
dec31
10:55 test1.sh
-rw-r--r-- 1 root root 19
dec31
10:50 test.sh
[root@localhost shell]# chmod +x test.sh
[root@localhost shell]# ll
total 8
-rw-r--r-- 1 root root 25
dec31
10:55 test1.sh
-rwxr-xr-x
1 root root 19
dec31
10:50 test.sh
[root@localhost shell]# ./test.sh
hello world
[root@localhost shell]#
<3>source script-name 或 . script-name《注意 . 號》
[root@localhost
shell]# source test.sh
hello world
[root@localhost
shell]# . test.sh
hello world
[root@localhost
shell]#
<4>用重定向或者管道來執行
[root@localhost
shell]# sh ni hao, ming tian
[root@localhost
shell]# cat test1.sh | sh
ni hao, ming tian
[root@localhost
shell]#
例題:
其執行結果為《空》,即就是沒有輸出結果
原因:echo $user是父shell,而test.sh是子shell,父shell不能直接繼承子shell的變數,函式等,反之可以
如果希望可以繼承(即讓父繼承子),用source或者點號執行就可以
shell知識點 指令碼的建立與執行
指令碼建立 指令碼執行當shell指令碼以非互動式方式執行時,會先查詢環境變數env,該變數指定了乙個環境檔案 通常是 bashrc 然後從該環境變數檔案開始執行。當讀取了env檔案後,shell才開始執行shell指令碼中的neri 執行方法 指令碼開發基本規範及習慣 開頭指定指令碼直譯器 bin...
如何建立可執行的shell指令碼
1.首先有乙個可以執行的linux環境,最簡單使用vm虛擬機器加linux系統,此次使用ubuntu12系統 2.進入系統後,使用ctrl shift t進入命令列,使用mkdir命令建立乙個資料夾 mkdir shell script 建立乙個shell script的資料夾,使用ls命令檢視,可...
shell 執行shell指令碼
bin bash echo hello world 是乙個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種 shell。echo 命令用於向視窗輸出文字。1 作為可執行程式 chmod x test.sh 使指令碼具有執行許可權 test.sh 執行指令碼注意,一定要寫成 test...