双色球走势:Linux 編程之shell入門基礎

來源:互聯網
更新時間:2018/2/9 2:40:14
責任編輯:魯能
字體:

福建体彩走势图 www.uyduz.icu

代碼:--------------------------------------------------------------------------------1.建立和運行shell程序

什么是shell程序呢? 簡單的說shell程序就是一個包含若干行

shell或者Linux命令的文件.

象編寫高級語言的程序一樣,編寫一個shell程序需要一個文本編輯器.如VI等.

在文本編輯環境下,依據shell的語法規則,輸入一些shell/linux命令行,形成一個完整

的程序文件.

執行shell程序文件有三種方法

(1)#chmod +x file

(2)#sh file

(3)# . file

在編寫shell時,第一行一定要指明系統需要那種shell解釋你的shell程序,如:#! /bin/bash,

#! /bin/csh,/bin/tcsh,還是#! /bin/pdksh .

2.shell中的變量

(1)常用系統變量

$ # :保存程序命令行參數的數目

$ ? :保存前一個命令的返回碼

$ 0 :保存程序名

$ * :以("$1 $2...")的形式保存所有輸入的命令行參數

$ @ :以("$1""$2"...)的形式保存所有輸入的命令行參數

(2)定義變量

shell語言是非類型的解釋型語言,不象用C++/JAVA語言編程時需要事先聲明變量.給一

個變量賦值,實際上就是定義了變量.

在linux支持的所有shell中,都可以用賦值符號(=)為變量賦值.

如:

abc=9 (bash/pdksh不能在等號兩側留下空格 )

set abc = 9 (tcsh/csh)

由于shell程序的變量是無類型的,所以用戶可以使用同一個變量時而存放字符時而存放

整數.

如:

name=abc (bash/pdksh)

set name = abc (tcsh)

在變量賦值之后,只需在變量前面加一個$去引用.

如:

echo $abc

(3)位置變量

當運行一個支持多個命令行參數的shell程序時,這些變量的值將分別存放在位置變量里.

其中第一個參數存放在位置變量1,第二個參數存放在位置變量2,依次類推...,shell保留

這些變量,不允許用戶以令外的方式定義他們.同別的變量,用$符號引用他們.

3.shell中引號的使用方法

shell使用引號(單引號/雙引號)和反斜線("/")用于向shell解釋器屏蔽一些特殊字符.

反引號(")對shell則有特殊意義.

如:

abc="how are you" (bash/pdksh)

set abc = "how are you" (tcsh)

這個命令行把三個單詞組成的字符串how are you作為一個整體賦值給變量abc.

abc1='@LOGNAME,how are you!' (bash/pdksh)

set abc1='$LOGNAME,how are you!' (tcsh)

abc2="$LOGNAME,how are you!" (bash/pdksh)

set abc2="$LOGNAME,how are you!" (tcsh)

LOGNAME變量是保存當前用戶名的shell變量,假設他的當前值是:wang.執行完兩條命令后,

abc1的內容是:$LOGNAME, how are you!.而abc2的內容是;wang, how are you!.

象單引號一樣,反斜線也能屏蔽所有特殊字符.但是他一次只能屏蔽一個字符.而不能屏蔽

一組字符.

反引號的功能不同于以上的三種符號.他不具有屏蔽特殊字符的功能.但是可以通過他將

一個命令的運行結果傳遞給另外一個命令.

如:

contents=`ls` (bash/pdksh)

set contents = `ls` (tcsh)

4.shell程序中的test命令

在bash/pdksh中,命令test用于計算一個條件表達式的值.他們經常在條件語句和循環

語句中被用來判斷某些條件是否滿足.

test命令的語法格式:

test expression

或者

[expression]

在test命令中,可以使用很多shell的內部操作符.這些操作符介紹如下:

(1)字符串操作符 用于計算字符串表達式

test命令 | 含義

-----------------------------------------

Str1 = str2 | 當str1與str2相同時,返回True

Str1! = str2| 當str1與str2不同時,返回True

Str | 當str不是空字符時,返回True

-n str | 當str的長度大于0時,返回True

-z str | 當str的長度是0時,返回True

-----------------------------------------

(2)整數操作符具有和字符操作符類似的功能.只是他們的操作是針對整數

test表達式 | 含義

---------------------------------------------

Int1 -eq int2|當int1等于int2時,返回True

Int1 -ge int2|當int1大于/等于int2時,返回True

Int1 -le int2|當int1小于/等于int2時,返回True

Int1 -gt int2|當int1大于int2時,返回True

Int1 -ne int2|當int1不等于int2時,返回True

-----------------------------------------

(3)用于文件操作的操作符,他們能檢查:文件是否存在,文件類型等

test表達式 | 含義

------------------------------------------------

-d file |當file是一個目錄時,返回 True

-f file |當file是一個普通文件時,返回 True

-r file |當file是一個刻讀文件時,返回 True

-s file |當file文件長度大于0時,返回 True

-w file |當file是一個可寫文件時,返回 True

-x file |當file是一個可執行文件時,返回 True

------------------------------------------------

(4)shell的邏輯操作符用于修飾/連接包含整數,字符串,文件操作符的表達式

test表達式 | 含義

----------------------------------------------------------

! expr |當expr的值是False時,返回True

Expr1 -a expr2|當expr1,expr2值同為True時,返回True

Expr1 -o expr2|當expr1,expr2的值至少有一個為True時,返回True

-----------------------------------------------------------

注意:

tcsh shell 不使用test命令,但是tcsh中的表達式同樣能承擔相同的功能.tcsh

支持的表達式于C中的表達式相同.通常使用在if和while命令中.

tcsh表達式 | 含義

-------------------------------------------------------

Int1 <= int2 |當int1小于/等于int2時,返回True

Int1 >= int2 |當int1大于/等于int2時,返回True

Int1 < int2 |當int1小于int2時,返回True

Int1 > int2 |當int1大于int2時,返回True

Str1 == str2 |當str1與str2相同時,返回True

Str1 != str2 |當str1與str2不同時,返回True

-r file |當file是一個可讀文件時,返回True

-w file |當file是一個可寫文件時,返回True

-x file |當file是一個可執行文件時,返回True

-e file |當file存在時,返回True

-o file |當file文件的所有者是當前用戶時,返回True

-z file |當file長度為0時,返回True

-f file |當file是一個普通文件時,返回True

-d file |當file是一個目錄時,返回True

Exp1 || exp2 |當exp1和exp2的值至少一個為True時,返回True

Exp1 && exp2 |當exp1和exp2的值同為True時,返回True

! exp |當exp的值為False時,返回True

5.條件語句

同其他高級語言程序一樣,復雜的shell程序中經常使用到分支和循環控制結構,

bash,pdksh和tcsh分別都有兩種不同形式的條件語句:if語句和case語句.

(1)if語句

語法格式:

bash/pdksh用法:

if [expression1]

then

commands1

elif [expression2]

commands2

else

commands3

if

tcsh用法:

if (expression1) then

commands1

else if (expression2) then

commands2

else

commands3

endif

含義:當expression1的條件為True時,shell執行then后面的commands1命令;當

expression1的條件為false并且expression2的條件滿足為True時,shell執行

commands2命令;當expression1和expressin2的條件值同為false時,shell執行

commands3命令.if語句以他的反寫fi結尾.

(2)case語句

case語句要求shell將一個字符串S與一組字符串模式P1,P2,...,Pn比較,當S與

某個模式Pi想匹配時,就執行相應的那一部分程序/命令.shell的case語句中字符

模式里可以包含象*這樣的通配符.

語法格式:

bash/pdksh用法:

case string1 in

str1)

commands1;;

str2)

commands2;;

*)

commands3;;

esac

tcsh用法:

switch (string1)

case str1:

statements1

breaksw

case str2:

statements2

breaksw

default:

statements3

breaksw

endsw

含義:shell將字符串string1分別和字符串模式str1和str2比較.如果string1與str1匹配,則

shell執行commands1的命令/語句;如果string11和str2匹配,則shell執行commands2的命令/

語句.否則shell將執行commands3的那段程序/命令.其中,每個分支的程序/命令都要以兩個

分號(;;)結束.

6.循環語句

當需要重復的某些操作時,就要用到循環語句.

(1)for語句

大家知道在很多編程語言中for語句是最常見.在shell中也不例外.for語句要求shell將包含

在這個語句中的一組命令連續執行一定的次數.

語法格式:

bash/pdksh

用法1:

for var1 in list

do

commands

done

含義:在這個for語句中,對應于list中的每個值,shell將執行一次commands代表的一組命令.

在整個循環的每一次執行中,變量var1將依此取list中的不同的值.

用法2:

for var1

do

setatements

done

含義:在這個for語句中,shell針對變量var1中的每一項分別執行一次statements代表的一組

命令.當使用這種形式的語句時,shell認為var1變量中包含了所有的位置變量,而位置變量中

存放著程序的命令行參數值.也就是說,他等價于下列形式:

for var1 in " [email protected]"

do

statements

done

tcsh用法:

在tcsh中沒有for這個單詞,與for語句起同樣功能的是foreach語句

foreach name (list)

commands

end

舉例:

for file ;bash/pdksh

do

tr a-z A-Z<$file>file.caps

done

# ;tcsh

foreach file ( $ * )

tr a-z A-Z<$file>$file.caps

end

(2)while語句

while語句是shell提供的另一種循環語句. while語句指定一個表達式和一組命令.這個

語句使得shell重復執行一組命令,直到表達式的值為False為止.

語法格式:

while expression ;bash

do

statements

done

while (expression) ;tcsh

statements

end

舉例:

count=1 ;bash

while [ -n "$ *"] ***

do

echo "this is a parameter number $count $1"

shift

count='expr $count + 1'

done

set count = 1 ;tcsh

while ( " $ * " ! = "")

echo "this is a parameter number $count $1"

shift

set count = 'expr $count + 1'

end

語句中shift命令的功能是將所有的命令行參數依次相左傳遞.

(3)until語句

until與while語句具有類似的語法格式和功能,不同的是while中expression的值為True時,

shell執行命令組;而until中當expression的值為False時,shell才執行那組命令.

語法格式:

until expression

do

commands

done

舉例:

count=1

until [ -z " $ * "] ***

echo "this is a parameter number $count $1"

shift

count='expr $count + 1'

done

情注意上述例子中帶***號.在while中的表達式: -n string,他的含義是當string不是空

字符串時,表達式的值為True;在until中的表達式: -z string,他的 含義是當string是空

字符串時,表達式的值為True.由此可見,兩個程序對條件表達式的設置恰好是相反的.

(4)shift語句

bash和tcsh都支持shift命令.shift將存放在位置變量中的命令行參數,依次向左傳遞.例如

位置變量當前值為:

$1=file1 $2=file2 $3=file3

執行一次shift命令后,位置變量的值為:

$1=file2 $2=file3

還可以在shift命令中指定位置變量轉移的次數, 如:

shift n

例子:

while [ "$1"]

do

if [ "$1"="-i"] then

infile=" $2"

shift 2

else if [ "$1"="-o"] then

outfile="$2"

shift 2

else

echo "Program $0 does not recognize option $1"

fi

done

tr a-z A-Z<$infile>$outfile

(5)select語句

select語句是pdksh提供的一個獨特的循環語句.他不同于前面介紹的循環語句.他不是

反復計算一個條件表達式,并依據表達式的值決定是否執行一組命令.select的功能是自動的

生成一個簡單的文本菜單.

語法格式:

select menu [in list_of_items]

do

commands

done

含義:當執行一個select語句時,pdksh分別為每個列在list_of_items中的成員建立一個菜單

選項.list_of_items既可以是一個包含多個選項的變量,也可以是直接列在程序中的一組選項

.如果語句中沒有提供list_of_items,select語句將使用位置變量作為list_of_items.

舉例:

select menuitem in pick1 pick2 pick3

do

echo "are you sure you want to pick $menuitem"

read res ;接收用戶的輸入,并且將輸入的值存放在特定變量里.

if [ $res=" y" -o $res=" Y"]

then

break ;用于退出while,for,select等循環語句

fi

done

(6)repeat語句

repeat語句是tcsh提供的獨有的循環語句.使用repeat命令要求shell對一個命令執行一定

的次數.

語法格式:

repeat count command

如;

foreach num ( $ *)

repeat $num echo -n " *"

echo " "

end

7.shell中的函數

shell允許用戶定義自己的函數.函數是高級語言中的重要結構.shell中的函數于C或者其他

語言中定義的函數一樣.與從頭開始,一行一行地寫程序相比,使用函數主要好處是有利于組織

整個程序.在bash中,一個函數的語法格式如下:

fname (){

shell comands

}

定義好函數后,需要在程序中調用他們.bash中調用函數的格式:

fname [parm1 parm2 parm3...]

調用函數時,可以向函數傳遞任意多個參數.函數將這些參數看做是存放他的命令行參數的

位置變量.

舉例:

這個程序定義了4個函數:

upper ():將傳遞給他的文件中的字母轉換成大寫,并存放到同名的結尾為.out的文件中.

lower ():將傳遞給他的文件里的字母轉換成小寫,并存放到同名的結尾為.out的文件中.

print ():輸出傳遞給他的文件的內容.

usage_error ():輸出程序的幫助信息.

程序的主??槭歉鯿ase條件語句,他根據命令行中第一個參數,決定程序要完成的功能,并調用相應

的函數完成這一功能.

upper (){

shift

for i

do

tr a-a A-Z<$!>$1.out

rm $1

mv $1.out $1

shift

done; }

lower () {

shift

for i

do

tr A-Z a-z<$1>$1.out

rm $1

mv $1.out $1

shift

done; }

print() {

shift

for i

do

lpr $1

shift

done; }

usage_error() {

echo " $1 syntax is $1 "

echo ""

echo " where option is one of the following"

echo " p--to print frame files"

echo " u--to save as uppercase"

echo " l--to save as lowercase";}

case $1 in

p | -p)print [email protected];;

u | -u)upper [email protected];;

l | -l)lower [email protected];;

*) usage_error $0;;

esac

------------------------------------------------------------------------------

總結

利用shell編程是提高系統管理工作效率的重要手段,學好shell跟了解系統基本命令和管理

工具的使用方法同樣重要!

附:

A.bash中常用的命令

命令 | 含義

-------------------------------------------------------------------------------

Alias |設置命令別名

Bg |將一個被掛起的進程在后臺執行

cd |改變用戶的當前目錄

exit |終止一個shell

export |使作為這個命令的參數的變量及其當前值,在當前運行的shell的子進程中可見

fc |編輯當前的命令行歷史列表

fg |讓一個被掛起的進程在前臺執行

help |顯示bash內部命令的幫助信息

history |顯示最近輸入的一定數量的命令行

kill |終止一個進程

pwd |顯示用戶當前工作目錄

unalias |刪除命令行別名

--------------------------------------------------------------------------------

B.bash中常用的系統變量

變量 | 含義

-------------------------------------------------------------------------------

EDITOR,FCEDIT |Bash的fc命令的默認文本編輯器

HISTFILE |規定存放最近輸入命令行文件的名字

HISTSIZE |規定命令行歷史文件的大小

HOME |當前用戶的宿主目錄

OLDPWD |用戶使用的前一個目錄

PATH |規定bash尋找可執行文件時搜索的路徑

PS1 |命令行環境中顯示第一級提示符號

PS2 |命令行環境中顯示第二級提示符號

PWD |用戶當前工作目錄

SECONDS |當前運行的bash進程的運行時間(以秒為單位)

轉自于 Xue163.com_Linux新手入門

根據您訪問的內容,您可能還對以下內容感興趣,希望對您有幫助:

Linux怎么進行基礎Shell編程?

答:Shell程序一般被稱為腳本,腳本也是一個程序,而每一個程序本身都是一個真值表達式,它的真值由其返回值決定,故Shell腳本應該返回一個值,若腳本未顯式指定返回值,則自動使用最后一條命令的返回值,如果需要顯式指定腳本的返回值,需要用exit...

學習linux shell 下的編程有什么用?

答:工作或者讀書等)需要學習linux的人,需要系統的學習一下,最好有一本好的書來學習。 linux是世界各地的黑客們寫出來的開源系統,對于熱愛學習計算機技術(算法、數據結構、編程、操作系統……)的人來說,linux是一個天堂。 我個人就是完全因為興...

學Linux shell編程需要其他語言基礎嗎?要不要數學?

答:shell屬于linux操作系統的一部分。 如果吹毛求疵地說,它應該不算是一門語言。 但是,因為它確實可以完成一些語言可以完成的工作,所以人們將寫shell腳本說成“shell編程” 其實,單論shell,它不過是對linux系統的一些核心操作而已,如果你想要實...

學習linux shell 下的編程有什么用?

答:工作或者讀書等)需要學習linux的人,需要系統的學習一下,最好有一本好的書 來學習。 linux是世界各地的黑客們寫出來的開源系統,對于熱愛學習計算機技術(算法、 數據結構、編程、操作系統……)的人來說,linux是一個天堂。 我個人就是完全因為...

linux 怎么進入shell編程模式

答:打開一個文本編輯器就進入shell編程模式了。甚至你可以用here文檔方式在直接在終端下進入編輯模式: $ cat Working dir $PWD > EOF Working dir /home/user 上面的模式等價于: cat Working dir $PWD

Linux Shell編程從初學到精通的目錄

答:《linux shell編程從初學到精通》第1章 shell腳本編程概述 11.1 linux和shell概述 21.1.1 linux簡介 21.1.2 shell簡介 31.2 shell腳本編程的優勢 51.3 第一個shell腳本例子 61.3.1 shell腳本的基本元素 61.3.2 執行shell腳本 71.4 本章小結 8第2...

學習Linux必須要學習shell編程嗎?

答:兄弟連的老師說,不能拿學習其它編程語言的概念來學習shell,學習shell,主要就是學會linux下各種工具的使用,然后用shell語言把他們聯合起來達到一定的目的。

linux 怎么進入shell編程模式

答:1.先打開終端:ctrl+art+t 快捷鍵即可以打開; 2.進入所在目錄:cd命令; 3.編輯:vi 或者 vim 舉例:在/home/根目錄有test.txt文件,要編輯它 1.打開終端 2.cd /home/ 3.vi test.txt 即可

linux命令行與shell腳本編程大全要什么基礎

答:最好么有RHCE的基??; 或者看完兩本鳥哥的基礎

linux shell編程從初學到精通 哪個好

答:教材其實都差不多,大多從基礎開始,然后深入一點就是grep 、awk、sed聯合正則表達式使用,最后就是綜合性實例學習

Linux怎么進行基礎Shell編程?

如果需要顯式指定腳本的返回值,需要用exit命令實現;然后是定義函數、條件測試和特定的流程控制語句,具體的使用步驟可以去看看ZLG《嵌入式Linux開發上冊》對Shell編程講...

學Linux shell編程需要其他語言基礎嗎?要不要數學?

所以人們將寫shell腳本說成"shell編程" 其實,單論shell,它不過是對linux系統的一些核心操作而已,如果你想要實現更加具體化的東西,就需要一些其它語言的輔助了,比如shell可以...

學習linux shell 下的編程有什么用?

linux是一個天堂。 我個人就是完全因為興趣而搗鼓linux,和工作不沾邊。 有幾種不同的學習: a)使用->需要學習linux的一些歷史、各種命令、桌面的操作、shell的知識 b)編程-...

linux命令行與shell腳本編程大全要什么基礎

最好么有RHCE的基礎; 或者看完兩本鳥哥的基礎

學習LINUX shell 腳本編程的書籍

Line and Shell Scripting Bible > > ,網上有pdf下載。 這本書也很全面。適合那些喜歡一章一章看書的人去學,印刷質量相當的好。 4. < < LINUX與UNIX Shell編程指南 &...

學習LINUX shell 腳本編程的書籍

<<Linux Shell編程>><<Linux系統管理/red hat9從入門到精通>><<24小時精通UNIX shell編程《精通UNIX Shell 腳本編程》  這些都可以買到..到當地...

學習LINUX shell 腳本編程的書籍

26第3章 Linux編程環境 283.1 Linux常用工具 283.1.1 Shell簡介 283.1.2 常用Shell命令 ... Linux系統啟動、Linux系統管理和維護、Linux服務器配置、shell編程、Linux C語言基礎...

我想學習linux 的shell編程 看什么書比較好呢 視頻教程也行

一是 《鳥哥的LINUX私房菜》 基礎要扎實 平時要多用LINUX,最好是每天用,最好是字符界面。 二是推薦《Linux Shell腳本攻略》 印度人寫的,很不錯。 最后嘗試用shell寫一些小...

linux那么多shell編程和命令怎么去記,目前要達到能通過筆試和...

學習的時候你可能需要記住很多很多的命令和參數,但是實際工作中可能你需要用到的命令可能會非常有限,但是會更深,更專一一些

Linux shell 編程主要是做什么的?

所以主要還是當作類似 Windows 下面批處理一類的東西。 當然 shell 功能要比批處理功能更多,類似 Windows 下面的腳本吧。 其實 shell 編程寫出來的就叫做"腳本"。 我...


www.xue163.net true //www.xue163.net/soft/18/186800.html report 18842 Linux編程之shell入門基礎,代碼:--------------------------------------------------------------------------------1.建立和運行shell程序什么是shell程序呢?簡單的說shell程序就是一個包...
網友評論
最新添加資訊
    24小時熱門資訊
    娛樂時尚
      科技資訊
      歷史文化
        真視界
        旅游美食
        精彩圖文
        我愛我車
        母嬰健康
        關于本站 | 廣告服務 | 手機版 | 商務合作 | 免責申明 | 招聘信息 | 聯系我們
        Copyright © 2004-2018 xue163.net All Rights Reserved. 學網 版權所有
        京ICP備10044368號-1 京公網安備11010802011102號
        教育考試: 學歷財經建筑 醫藥公考資格外語電腦作文招聘中小學留學 文檔 移民 文庫專欄23問答中心問答圖書館知識IT編程數碼信息解決方案信息中心IT科技topzttophottopsctopnew問答新聞中心軟件教室設計大全網絡相關英語學習開發編程考試中心參考范文管理文庫營銷中心站長之家IT信息中心商學院數碼大全硬件DIY企業服務網吧在線百科硬件知識手機平板汽車游戲家電精彩攝影現代家居IT女人經驗健康養生獵奇創業攻略教育學習歷史時尚潮流福建体彩走势图漲知識
        11选5任88注必中 北京pk拾赢遍天下 香港慈善网三肖论坛 平特宝典 4码15期倍投方案 福彩3d技巧和秘籍 福彩双色球机选号码投注 赌博大小单双怎么能赢 大乐透啥时候停售 mg电子游戏容易赢钱吗 炸金花做牌技巧视频 全民彩彩票官网 游戏《森林》手机版 冠通棋牌二人麻将安卓 时时彩为什么改为20分钟 有多少人靠时时彩过日