當前位置:首頁 » 編程軟體 » shell腳本運行

shell腳本運行

發布時間: 2022-01-11 21:47:45

『壹』 linuxshell 腳本執行的過程是怎樣的

Linux下可以有兩種方式執行Shell腳本:

1、用shell程序執行腳本:根據shell腳本的類型,選擇shell程序,常用的有sh,bash,tcsh等(一般來說第一行#!/bin/bash裡面指明了shell類型的,比如#!/bin/bash指明是bash,#!/bin/sh則是sh);然後輸入命令(其中bash為shell的名稱,myshell.sh則為要執行的代碼):

bash myshell.sh

2、直接執行腳本:

不過首先的加上可執行許可權(也許要root許可權,4情況而定),執行:

chmod +x myshell.sh

然後執行:

./myshell.sh

就可以執行了。

『貳』 這個shell腳本怎麼才能運行起來

首先,如果你想運行shell腳本的話,必須確保這個腳本具有執行許可權,如果沒有執行許可權,可以用如下命令加上執行許可權:chmod +x 文件名;
其次,你的shell腳本可以運行,裡面的內容必須正確;
另外,寫shell的時候要對自己寫的內容了解,否則造成的損失是不可估量的。

『叄』 如何執行shell腳本其中一條命令

方法一:切換到shell腳本所在的目錄(此時,稱為工作目錄)執行shell腳本:

復制代碼代碼如下:

cd /data/shell

./hello.sh

./的意思是說在當前的工作目錄下執行hello.sh。如果不加上./,bash可能會響應找到不到hello.sh的錯誤信息。因為目前的工作目錄(/data/shell)可能不在執行程序默認的搜索路徑之列,也就是說,不在環境變數PASH的內容之中。查看PATH的內容可用 echo $PASH 命令。現在的/data/shell就不在環境變數PASH中的,所以必須加上./才可執行。

方法二:以絕對路徑的方式去執行bash shell腳本:

復制代碼代碼如下:

/data/shell/hello.sh

方法三:直接使用bash 或sh 來執行bash shell腳本:

復制代碼代碼如下:

cd /data/shell

bash hello.sh



復制代碼代碼如下:

cd /data/shell

sh hello.sh

注意,若是以方法三的方式來執行,那麼,可以不必事先設定shell的執行許可權,甚至都不用寫shell文件中的第一行(指定bash路徑)。因為方法三是將hello.sh作為參數傳給sh(bash)命令來執行的。這時不是hello.sh自己來執行,而是被人家調用執行,所以不要執行許可權。那麼不用指定bash路徑自然也好理解了啊,呵呵……。

方法四:在當前的shell環境中執行bash shell腳本:

復制代碼代碼如下:

cd /data/shell

. hello.sh



復制代碼代碼如下:

cd /data/shell

source hello.sh

前三種方法執行shell腳本時都是在當前shell(稱為父shell)開啟一個子shell環境,此shell腳本就在這個子shell環境中執行。shell腳本執行完後子shell環境隨即關閉,然後又回到父shell中。而方法四則是在當前shell中執行的。

『肆』 如何用SHELL命令運行一個文件

1、Shell是命令解釋器,所執行的文件有兩種,一種是基於ELF文件格式的可執行文件,一種是基於Shell腳本格式的腳本文件。

2、不管是可執行文件還是shell腳本,如果存在於PATH變數所指明的路徑中,shell會自動尋找相應的可執行文件,用戶只需要輸入可執行文件名或者腳本名即可執行。

3、如果可執行文件或者Shell腳本的存放位置不在PATH變數所指明的路徑中,則需要通過".」來執行,比如下面的C語言寫的hello world程序,需要輸入./t才可以被shell運行。

『伍』 SHELL腳本運行的幾種方法以及區別

#2 sh/bash ./a.sh 這種情況不需要腳本具有執行許可權 以上兩種執行方式都是在子shell中執行的,也就是說當前shell需要啟動另外一個shell,用來執行a.sh內的命令 #1 source ./a.sh #2 ../a.sh(注意前面的 . ) 以上兩種執行方式是在當前shell下執行,並不需要建立子shell source和 . 命令的作用:用來執行一個腳本 前兩種方式和後兩種方式的另外區別:如果你在一個腳本里export $KKK=111 ,如果你用./a.sh執行該腳本,執行完畢後,你運行 echo $KKK ,發現沒有值,如果你用source來執行 ,然後再echo ,就會發現KKK=111。因為調用./a.sh來執行shell是在一個子shell里運行的,所以執行後,結構並沒有反應到父shell里,但是source不同它就是在本shell中執行的,所以可以看到結果。 # 執行腳本時是在一個子shell環境運行的,腳本執行完後該子shell自動退出 # 一個shell中的系統環境變數只對該shell或者它的子shell有效,該shell結束時變數消失(並不能返回到父shell中) # 用export定義的變數會被復制到該shell的子shell中

『陸』 怎麼在shell里寫腳本並運行

執行「nano function.sh」命令,創建新的shell腳本文件,名字為「function.sh」。

編輯新創建的shell腳本文件「function.sh"。函數必須先定義後使用。

shell腳本的內容如下:
#!/bin/bash
add(){

sum_1=$1;
sum_2=$2;
sum=`expr $sum_1 + $sum_2`;
echo "the sum is ${sum}";
}

add $1 $2

給新創建的function.sh賦可執行許可權,命令為「chmod 755 function.sh」。

使用「./function.sh 1 2」調用腳本,並給腳本傳遞兩個數字。

6
執行命令的結果為「the sum is 3」。

『柒』 Linux shell腳本如何自動運行程序並輸入命令

我建議你使用shell的spawn命令,很好用的,能實現你說的功能!

『捌』 如何運行shell腳本

編寫好的shell腳本(如:test),可以採取兩種方式進行運行:
一、 $ sh test
一般不採用這種調用方式,尤其不採用「sh<test」的調用方式,因為這種方式將禁止shell讀取標准輸入。
也可以採用 $ ksh test
這種方式要求shell具有「可讀」的訪問許可權。
二、直接運行可執行的shell腳本之前,首先應使用下列chmod命令,把shell腳本文件設置為可執行的文件。
chmod 755 test(除文件屬主可寫之外,每個用戶均具有讀和可執行的訪問許可權)
chmod +rx test(同上)
chmod u+rx test(只有文件屬主具有讀和執行的訪問許可權)
按照上述要求設置shell腳本文件的訪問許可權後,可採用下列方式,直接運行shell腳本了。
1、test(如果命令檢索路徑包含當前目錄)
2、./test(如果命令減縮路徑不包含當前目錄)
*說明: sh test 方式調用一個shell叫蹦可能會禁止某些shell特定的擴展功能,因而可能引起腳本無法正確執行。

『玖』 如何運行linux shell程序

如何運行shell程序,如何在shell程序以及後續腳本中使用同一個變數,這些在工作中經常用到, 我找到如下的文章,再加深復習一下。
1 source命令用法:
source FileName
作用:在當前bash環境下讀取並執行FileName中的命令。該filename文件可以無"執行許可權"
註:該命令通常用命令「.」來替代。
如:source .bash_profile
. .bash_profile兩者等效。
source(或點)命令通常用於重新執行剛修改的初始化文檔。
source命令(從 C Shell 而來)是bash shell的內置命令。
點命令,就是個點符號,(從Bourne Shell而來)。
source的程序主體是bash,腳本中的$0變數的值是bash,而且由於作用於當前bash環境,腳本中set的變數將直接起效

2 sh, bash的命令用法:
sh/bash FileName

作用:打開一個子shell來讀取並執行FileName中命令。該filename文件可以無"執行許可權"

註:運行一個shell腳本時會啟動另一個命令解釋器.
每個shell腳本有效地運行在父shell(parent shell)的一個子進程里.
這個父shell是指在一個控制終端或在一個xterm窗口中給你命令指示符的進程.
shell腳本也可以啟動他自已的子進程.
這些子shell(即子進程)使腳本並行地,有效率地地同時運行腳本內的多個子任務.
在ubuntu中sh只是bash的一個鏈接。
由於是在子shell中執行,腳本設置的變數不會影響當前shell。

3 ./的命令用法:
./FileName
作用:打開一個子shell來讀取並執行FileName中命令。該filename文件需要"執行許可權"
註:運行一個shell腳本時會啟動另一個命令解釋器.
每個shell腳本有效地運行在父shell(parent shell)的一個子進程里.
這個父shell是指在一個控制終端或在一個xterm窗口中給你命令指示符的進程.
shell腳本也可以啟動他自已的子進程.
這些子shell(即子進程)使腳本並行地,有效率地地同時運行腳本內的多個子任務.
由於是在子shell中執行,腳本設置的變數不會影響當前shell。

4 export:
一個變數創建時,它不會自動地為在它之後創建的shell進程所知。而命令export可以向後面的shell傳遞變數的值。當一個shell腳本調用並執行時,它不會自動得到原為腳本(調用者)里定義的變數的訪問權,除非這些變數已經被顯式地設置為可用。export命令可以用於傳遞一個或多個變數的值到任何後繼腳本
5. 舉例
比如您在一個腳本里export $KKK=111 ,假如您用./a.sh執行該腳本,執行完畢後,您運行 echo $KKK ,發現沒有值,假如您用source來執行 ,然後再echo ,就會發現KKK=111。因為調用./a.sh來執行shell是在一個子shell里運行的,所以執行後,結構並沒有反應到父shell里,但是 source不同他就是在本shell中執行的,所以能夠看到結果.
小測試
1 建立test.sh
#!/bin/bash
export s=/home/jboss/
2 執行命令: source test.sh
echo $s
結果輸出: /home/jboss/
3 新開個shell
執行命令: ./test.sh
echo $s
結果: 沒有輸出s值

結論:
1、執行腳本時是在一個子shell環境運行的,腳本執行完後該子shell自動退出。
2、一個shell中的系統環境變數才會被復制到子shell中(用export定義的變數);
3、一個shell中的系統環境變數只對該shell或者它的子shell有效,該shell結束時變數消失(並不能返回到父shell中)。3、不用 export定義的變數只對該shell有效,對子shell也是無效的。

直接執行一個腳本文件是在一個子shell中運行的,而source則是在當前shell環境中運行的。
source可以讓腳本影響它們的父shell環境,這和export去影響子shell環境相反.

熱點內容
本地伺服器怎麼搭建路由器 發布:2024-11-15 01:42:34 瀏覽:280
pythonnlst 發布:2024-11-15 01:11:12 瀏覽:284
安卓手機怎麼注冊蘋果雲 發布:2024-11-15 01:05:00 瀏覽:408
資料庫設計模板 發布:2024-11-15 00:47:25 瀏覽:826
編程的悟性 發布:2024-11-15 00:47:24 瀏覽:734
主流可編譯語言 發布:2024-11-15 00:42:23 瀏覽:730
excel緩存清除 發布:2024-11-15 00:39:53 瀏覽:487
機械鍵盤可編程 發布:2024-11-15 00:39:09 瀏覽:913
php判斷字元開頭 發布:2024-11-15 00:35:33 瀏覽:508
網易蘋果游戲怎麼轉移到安卓 發布:2024-11-15 00:07:52 瀏覽:270