歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Linux.Shell編程筆記-入門概念

本筆記是根據linuxShell編程入門到精通一書學習實驗和相關整理做的筆記

pdf文件下載:http://download.csdn.net/detail/ruishenh/6586391

第一章 概念

如何運行程序
運行linux程序有三種方法

1. 使用文件具有可執行權限,直接運行文件。

2. 直接調用命令解釋器執行程序

3. 使用source執行文件

Linux可執行的命令分為三種:內建命令、shell函數和外部命令。

1. 內建命令就是shell程序本身的命令。這些命令集成在shell解釋器中。比如(cd)

2. Shell函數是一系列的程序代碼,以shell語言寫成,它可以像其他命令一樣被引用。

3. 外部命令是獨立於shell的一個執行程序。例如find, grep, echo.sh。命令行shell在執行外部命令時,會創建一個當前shell的復制進程來執行。在執行過程,存在進程的創建和消亡。外部命令的執行過程如下。

① 用POSIX系統fork函數接口,創建一個命令行shell進程的復制(子進程)。

② 在子進程的運行環境中,查找外部命令在linux文件系統中的位置。如果外部命令給出了完全路徑,則略過查找這一步。

③ 在子進程裡,以新程序取代shell拷貝並執行(exec),此時父進程進入休眠,等待子進程執行完畢。

④ 子進程執行完畢後,父進程接著從終端讀取下一條命令。

Note

(1)子進程在創建初期和父進程一模一樣,但是子進程不能改變父進程的參數變童。

(2)只有內建命令才能改變命令行shell的屬性設顯〔環境變量)。

使用source執行shell腳本時,不會創建子進程,而是在父進程中直接執行!

Linux shell 變量
變量

變量(variable)在許多程序設計語言中都有定義,與變量相伴的有使用范圍的定義。變量的本質就是一個鍵值對(key=value)

shell變量的名稱以一個字母或下劃線符號開始,後面可以接任意長度的字毋、數字或下劃線。和許多其他程序設計語言不同的是,shell變量名稱字符並沒有長度限制。Linux Shell並不對變量區分類型,一切值都是字符串,並且和變量名一樣,值並沒有字符長度限制。神奇的是,bash也允許比較操作和整數操作。其中的關鍵因索是:變量中的字符串值是否為數字。

變量類型:局部變量和全局變量。

局部變量在聲明的時候必須用local顯示指定。全局變量不用加任何修飾。(環境變量)

Echo 輸出

$ echo 'abc'
$ echo $JAVA_HOME 

Export 導入變量

exportPATH=/usr/local/pig/pig-0.12.0/bin:$PATH 

env函數和set函數是不同的env函數顯示的是環境變量,set函數則顯示所有的本地變量,包括用戶的環境變量。例如,當用戶在命令行中設笠Var = 123時,set函數將顯示var變量,而Env函數則不顯

示(var此時是本地變童,不是環境變量)。如果使用export var = 123命令,則set和Env函數都可以顯示var變量。

語言類型

計算機不能直接理解高級語言,只能直接理解機器語言,所以必須把高級語言翻譯成機器語言計算機才能執行高級語言編寫的程序。

語言一般分為編譯型和解釋型

編譯型語言有比如使用的exe文件。二進制文件。或者java程序的 .class文件(jar文件)

解釋型有js,python,shell等。

Linuxshell 優勢

1. 簡潔

Linux Shell所處的內核外層環境使得任何高級操作成為可能。

2. 開發容易
由於它遵循了unix的哲學,優化到今天,在前人的積累下變的開發容易

3. 便於移植

可以在任何unix/linux上運行

在寫shell腳本中都會加入 #! 引入解釋器來解釋

比如

#!/bin/bash 
#!/bin/sh
#!/bin/rm
#!/bin/more
Copyright © Linux教程網 All Rights Reserved