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

shell腳本sh

發布時間: 2022-10-17 01:01:14

『壹』 什麼是shell腳本

操作系統與外部最主要的介面就叫做shell。shell是操作系統最外面的一層。shell管理你與操作系統之間的交互:等待你輸入,向操作系統解
釋你的輸入,並且處理各種各樣的操作系統的輸出結果。 shell提供了你與操作系統之間通訊的方式。這種通訊可以以交互方式(從鍵盤輸
入,並且可以立即得到響應),或者以shell script(非交互)方式執行。shell script是放在文件中的一串shell和操作系統命令,它們可以被
重復使用。本質上,shell script是命令行命令簡單的組合到一個文件裡面。 Shell基本上是一個命令解釋器,類似於DOS下的command.com
。它接收用戶命令(如ls等),然後調用相應的應用程序。較為通用的shell有標準的Bourne shell (sh)和C shell (csh)。

互動式shell和非互動式shell 互動式模式就是shell等待你的輸入,並且執行你提交的命令。這種模式被稱作互動式是因為shell與用戶進行交
互。這種模式也是大多數用戶非常熟悉的:登錄、執行一些命令、簽退。當你簽退後,shell也終止了。 shell也可以運行在另外一種模式:非
互動式模式。在這種模式下,shell不與你進行交互,而是讀取存放在文件中的命令,並且執行它們。當它讀到文件的結尾,shell也就終止了。

shell的類型在UNIX中主要有兩大類shell Bourne shell (包括 sh, ksh, and bash) Bourne shell ( sh) Korn shell ( ksh) Bourne Again
shell ( bash) POSIX shell ( sh) C shell (包括 csh and tcsh) C shell ( csh) TENEX/TOPS C shell ( tcsh).
附:linux系統的shell原理

Linux系統的shell作為操作系統的外殼,為用戶提供使用操作系統的介面。它是命令語言、命令解釋程序及程序設計語言的統稱。

shell是用戶和Linux內核之間的介面程序,如果把Linux內核想像成一個球體的中心,shell就是圍繞內核的外層。當從shell或其他程序向
Linux傳遞命令時,內核會做出相應的反應。 shell是一個命令語言解釋器,它擁有自己內建的shell命令集,shell也能被系統中其他應用
程序所調用。用戶在提示符下輸入的命令都由shell先解釋然後傳給Linux核心。

『貳』 linux 命令中的sh是什麼意思

1、sh是linux中運行shell的命令,是shell的解釋器,shell腳本是linux中殼層與命令行界面,用戶可以在shell腳本輸入命令來執行各種各樣的任務。

要運行shell腳本,首選需要給shell腳本許可權,這里里以hello.sh文件為例,首先需要按下「crtl+shift+T」打開終端窗口:

『叄』 執行shell腳本三種方法的區別:(sh、exec、source)

使用$ sh script.sh執行腳本時,當前shell是父進程,生成一個子shell進程,在子shell中執行腳本。腳本執行完畢,退出子shell,回到當前shell。
./script.sh與 sh script.sh等效。

使用$ source script.sh方式,在當前上下文中執行腳本,不會生成新的進程。腳本執行完畢,回到當前shell。
source方式也叫點命令。
. script.sh與 source script.sh等效。

使用exec command方式,會用command進程替換當前shell進程,並且保持PID不變。執行完畢,直接退出,不回到之前的shell環境。

二、測試驗證
vi loop.sh

顯示當前進程

sh的方式:執行loop.sh列印執行進程

source方式:執行loop.sh列印執行進程

exec方式:執行loop.sh列印執行進程

按下ctrl+C

sh方式:父進程是6770,執行loop.sh時的子進程是13736。執行完畢後回到父進程shell。
source方式:父進程和子進程都是6770(執行時沒有新的進程),執行完畢會回到父進程shell。
exec方式:進程PID沒有改變都是6770,執行完畢(ctrl+C強制關閉)時直接退出了shell。腳本執行時替換了父進程的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」。

『伍』 shell腳本文件指的是*.sh文件嗎

Shell腳本通常都是以.sh 為後綴名的,這個並不是說不帶.sh這個腳本就不能執行,只是大家的一個習慣而已。所以,以後你發現了.sh為後綴的文件那麼它一定會是一個shell腳本了。

『陸』 如何編寫一個shell腳本

新建一個文件shell腳本一般用×.sh作為後綴當然勇氣他的也可以。打開終端輸入touch first.sh 新建一個名為first的shell腳本。
編寫一個簡單的linuxshell腳本
使用vim 編輯first.sh也可以用其他的文本編輯器,推薦使用vim
使用命令 vim first.sh打開,輸入i進入編輯模式。
編寫一個簡單的linuxshell腳本
我們寫入一個簡單的shell腳本,注意第一行的代碼解釋器的指定,這里使用的是/bin/bash/ 解釋器 也可用其他的根據個人情況自己選擇。
腳本解釋:
echo //顯示一串字元並自動換行
read NAME //從屏幕獲取一段字元,並賦予NAME
$NAME //取NAME變數的值
# //只用一個#表示注釋文本
編寫一個簡單的linuxshell腳本
文件寫完後按下esc鍵 退出插入模式,接著輸入:wq 保存文本並退出文本編輯。
編寫一個簡單的linuxshell腳本
輸入sh + 腳本名稱 運行腳本,或給文件可運行許可權 chmod +x 然後輸入./first.sh運行腳本。

『柒』 Shell腳本有哪些類型.csh . py .sh 這些腳本有什麼區別

通常寫一個shell腳本都要在第一行註明使用什麼解釋器來解釋這個腳本,即寫成:
#!/bin/bash
這樣的形式,意思是告訴系統要使用/bin/bash這個解釋器來解釋下面的語句。
shell的腳本一般用.sh作為後綴,就如1樓說的後綴名在Linux下並沒有特別意義,只是便於人類區分而已,只要你寫的腳本的第一行有#!/bin/bash或者是其他的解釋器,如#!/bin/csh,執行該腳本時系統會使用該註明的解釋器來解釋。
.csh大概是用來區分,這個腳本使用csh這個shell解釋器來解釋。
.sh用來區分,這個腳本使用bash或sh解釋器來解釋。
.py則是使用python來解釋。

『捌』 Shell腳本的概念區別

給腳本加上執行許可權chmod
u+x
a.sh,
而後就可以直接用全路徑來執行腳本了,比如當前文件夾下用./a.sh,如果如果腳本所在目錄在path環境變數之中,
則直接用a.sh即可(這和運行我們自己編寫的程序是一個道理)sh/bash
./a.sh
這種情況不需要腳本具有執行許可權以上兩種執行方式都是在子shell中執行的,也就是說當前shell需要啟動另外一個shell,用來執行a.sh內的命令source
./a.sh
.
./a.sh(注意前面的
.
)以上兩種執行方式是在當前shell下執行,並不需要建立子shellsource和
.
命令的作用:用來執行一個腳本
前兩種方式和後兩種方式的另外區別:如果你在一個腳本里export
$kkk=111
,如果你用./a.sh執行該腳本,執行完畢後,你運行
echo
$kkk
,發現沒有值,如果你用source來執行
,然後再echo
,就會發現kkk=111。因為調用./a.sh來執行shell是在一個子shell里運行的,所以執行後,結構並沒有反應到父shell里,但是
source不同它就是在本shell中執行的,所以可以看到結果。

『玖』 什麼是shell腳本

什麼是shell

shell是用戶和Linux操作系統之間的介面。Linux中有多種shell,其中預設使用的是Bash。本章講述了shell的工作原理,shell的種類,shell的一般操作及Bash的特性。

什麼是shell

Linux系統的shell作為操作系統的外殼,為用戶提供使用操作系統的介面。它是命令語言、命令解釋程序及程序設計語言的統稱。

shell是用戶和Linux內核之間的介面程序,如果把Linux內核想像成一個球體的中心,shell就是圍繞內核的外層。當從shell或其他程序向Linux傳遞命令時,內核會做出相應的反應。

shell是一個命令語言解釋器,它擁有自己內建的shell命令集,shell也能被系統中其他應用程序所調用。用戶在提示符下輸入的命令都由shell先解釋然後傳給Linux核心。

Shell是一種具備特殊功能的程序, 它是介於使用者和 UNIX/linux 操作系統之核心
程序(kernel)間的一個介面。為什麼我們說 shell 是一種介於系統核心程序與使用者
間的中介者呢?讀過操作系統概論的讀者們都知道操作系統是一個系統資源的管理者與分
配者,當您有需求時,您得向系統提出;從操作系統的角度來看,它也必須防止使用者因
為錯誤的操作而造成系統的傷害?眾所周知,對計算機下命令得透過命令(command) 或
是程序(program);程序有編譯器(compiler)將程序轉為二進制代碼,可是命令呢?
其實shell 也是一支程序,它由輸入設備讀取命令,再將其轉為計算機可以了解的機械碼,
然後執行它。
各種操作系統都有它自己的 shell,以 DOS 為例,它的 shell 就是 command.com文
件。如同 DOS 下有 NDOS,4DOS,DRDOS 等不同的命令解譯程序可以取代標準的
command.com ,UNIX 下除了 Bourne shell(/bin/sh) 外還有 C shell(/bin/csh)、
Korn shell(/bin/ksh)、Bourne again shell(/bin/bash)、Tenex C shell(tcsh)
等其它的 shell。UNIX/linux將 shell 獨立於核心程序之外, 使得它就如同一般的應用
程序, 可以在不影響操作系統本身的情況下進行修改、更新版本或是添加新的功能。

有一些命令,比如改變工作目錄命令cd,是包含在shell內部的。還有一些命令,例如拷貝命令cp和移動命令rm,是存在於文件系統中某個目錄下的單獨的程序。對用戶而言,不必關心一個命令是建立在shell內部還是一個單獨的程序。

shell首先檢查命令是否是內部命令,若不是再檢查是否是一個應用程序(這里的應用程序可以是Linux本身的實用程序,如ls和rm,也可以是購買的商業程序,如xv,或者是自由軟體,如emacs)。然後shell在搜索路徑里尋找這些應用程序(搜索路徑就是一個能找到可執行程序的目錄列表)。如果鍵入的命令不是一個內部命令並且在路徑里沒有找到這個可執行文件,將會顯示一條錯誤信息。如果能夠成功找到命令,該內部命令或應用程序將被分解為系統調用並傳給Linux內核。

shell的另一個重要特性是它自身就是一個解釋型的程序設計語言,shell程序設計語言支持絕大多數在高級語言中能見到的程序元素,如函數、變數、數組和程序控制結構。shell編程語言簡單易學,任何在提示符中能鍵入的命令都能放到一個可執行的shell程序中。

當普通用戶成功登錄,系統將執行一個稱為shell的程序。正是shell進程提供了命令行提示符。作為默認值(TurboLinux系統默認的shell是BASH),對普通用戶用「$」作提示符,對超級用戶(root)用「#」作提示符。

一旦出現了shell提示符,就可以鍵入命令名稱及命令所需要的參數。shell將執行這些命令。如果一條命令花費了很長的時間來運行,或者在屏幕上產生了大量的輸出,可以從鍵盤上按ctrl+c發出中斷信號來中斷它(在正常結束之前,中止它的執行)。

當用戶准備結束登錄對話進程時,可以鍵入logout命令、exit命令或文件結束符(EOF)(按ctrl+d實現),結束登錄。

『拾』 sh代表什麼意思

1、sh是linux中運行shell的命令,是shell的解釋器,shell腳本是linux中殼層與命令行界面,用戶可以在shell腳本輸入命令來執行各種各樣的任務。

要運行shell腳本,首選需要給shell腳本許可權,這里里以hello.sh文件為例,首先需要按下「crtl+shift+T」打開終端窗口:

(10)shell腳本sh擴展閱讀

使用用戶的預設憑證和環境執行 shell。

在UEFI環境下,EFI的Shell環境提供了一組豐富的擴展和增強的命令,在以後的計算機中,傳統的DOS界面將會被SHELL環境所取代。

所有的.exe文件將不會在以後支持SHELL的環境中出現,取而代之的文件後綴是.efi。在SHELL環境下,分為IA32和X64,32位的*.efi文件不能在X64的計算機中運行。

熱點內容
如何評價一個伺服器的性能 發布:2025-05-17 23:40:53 瀏覽:270
淘寶客適合什麼伺服器 發布:2025-05-17 23:39:26 瀏覽:612
python循環文件 發布:2025-05-17 23:39:22 瀏覽:828
androidstudio更新 發布:2025-05-17 23:38:22 瀏覽:643
java項目面試 發布:2025-05-17 23:30:53 瀏覽:780
若主存儲器按位元組編址 發布:2025-05-17 23:30:46 瀏覽:24
kotlinandroid 發布:2025-05-17 23:19:09 瀏覽:974
雲編程英語 發布:2025-05-17 23:18:34 瀏覽:623
androidstudio導入類 發布:2025-05-17 23:15:36 瀏覽:237
私人電腦伺服器如何設置 發布:2025-05-17 23:14:48 瀏覽:366