TCSH shell 程式設計入門

2021-03-31 23:06:14 字數 3198 閱讀 9201

簡介

tcsh shell不同於其他的shell,因為控制結構更符合程式語言的格式.例如

tcsh 的test條件的控制結構是表示式,而不是linux命令,得到的值是邏輯值true

或false,tcsh的表示式與c語言中的表示式基本相同.

一,tcsh shell變數,指令碼,引數

使用者可以在shell中定義變數,為變數賦值以及引用指令碼引數.tcsh使用set,@,setenv定

義一變數,也可以用相同的方法定義數值變數和陣列,使用者通過@命令定義的數值變數來

進行算術運算,使用者使用圓括號()和方括號定義和引用陣列.指令碼也可以用相同的方

法操作,但是有個例外,儘管可以用echo命令輸出提示符,但沒有read命令處理輸入,相

反,必須重定向到乙個變數裡.

二,指令碼輸入和指令碼輸出: $ <

使用者能夠在指令碼範圍中定義和使用變數.在下例中,使用文字編輯器把賦值操作和echo

之類的linux命令放在乙個檔案中.然後, 可以產生可執行檔案並像其他命令一樣在命

令行中執行它,要記住新增可執行許可權,必須使用帶u+x引數的chmod命令或者帶絕對參

數700的chmod命令.在指令碼中,可以使用echo命令去輸出資料,但是,必須通過重定向標

準輸入把輸入讀入變數.在tcsh中沒有linux read命令的比較版本.記住tcsh全部的腳

本檔案的第一行的第乙個字元必須是"#"字元.如:#

#display "hello"

set string="hello"

echo the value of string is $string

set命令和重定向符號結合$ 大於

< 小於

>= 大於等於

!代替》

四,控制結構

同其他shell一樣,tcsh也有一系列的控制結構控制指令碼的命令的執行.while和if控

制結構是最常用的控制結構.switch和foreach是更專用的控制結構.switch是if條件

的限定形式,檢查數值是否等於一系列可能的數值中的乙個數值.foreach是迴圈結構

的限定形式.瀏覽數值列表,給變數賦新的數值.

tcsh不同的控制結構列表:

條件控制結構; 功能

if (expression) then 如果expression為真,則執行***mands

***mands

endif

if (expression) then 如果expression為真,則執行***mand1,否則執行

***mand1 ***mand2.

else

***mand2

endif

switch (string) 允許在幾條替換命令中選擇,string為不同的模式

case pattern:

***mands

breadsw

default:

***mands

endsw

迴圈控制結構: 功能

while (expression) 只要expression為真,則重複執行***mands,

***mands 直到expression為假時跳出迴圈

endforeach variable (argument-list)迭代迴圈獲得和argument-list中一樣多的引數

***mands (每次迴圈variable被設定為列表的下乙個引數;

end 操作方式同bsh)

tcsh中的控制結構有別於其他的shell,因為它更接近程式語言(c).tcsh的條件表達

式的值為true/false.bash和tcsh主要區別在於tcsh的結構不可重定向或進行管道

輸出.五,測試表示式;()

if和while控制結構把表示式用作測試.表示式測試的結果為非零(1)表示真,而零

(0)表示假(跟bash相反).測試表示式可由算術/字串比較,但是字串只能作相

等和不相等的比較.而且表示式必須要在()括號內.

如:if (expression) then

***mand

endif

tcsh有一系列的運算子來分別對字串進行測試比較.正規表示式可以包含shell指令碼的

指令的字串.如:

if ( $var =~[hh]* ) then #如果變數$var以字母是大寫/小寫hh開頭,的字串

echo information #執行命令

endif #結束

有很多測試檔案的操作與bash完全相同.如:

if ( -r myfile ) then #測試myfile是否可讀

echo info

endif

測試表示式的基本操作:

字串比較: 功能

== 是否相等,若相等返回真

!= 是否不等,若不等返回真

=~ 字串和模式進行測試是否相等(模式為任意正規表示式)

!~ 字串和模式測試是否不等(模式為任意正規表示式)

檔案測試: 功能

-e 測試檔案是否存在

-r 測試檔案是否可讀

-w 測試檔案是否可寫

-x 測試檔案是否可執行

-d 測試檔名是否為目錄

-f 測試檔案是否為普通檔案

-o 測試檔案是否被使用者所擁有

-z 測試檔案是否為空

邏輯運算子: 功能

&& 與運算,兩個條件同時蠻族

|| 或運算,有乙個條件滿足

! 取反

六,tcsh內建命令

1,數字變數:@

在tcsh中,用@命令代替set命令來宣告數字變數,然後進行算術,關係和位操作,數字和

字串變數是兩個不同的物件,需要用不同的方法管理,不能把set用於數值變數的設定

%@ num=10 #注意空格

%@ sum=2 * ($num + 3)

%echo $sum

%262,alias

格式:alias [name[***mand]]

如:alias list ls

alias list 'ls -l'

3,argv

當指令碼被執行時,命令列中的單詞被分析並放入argv陣列中.argv[0],argv[1]...

argv[n],其中argv[0]儲存命令名,argv[1]儲存命令的第乙個引數,argv[n]命令的

第n個引數.argv陣列元素可縮寫元素號碼,前面加$.如:$argv[1]寫為$1.$argv

程式設計入門

include include int main const double pi acos 1.0 盡量用const關鍵字宣告常數 輸入乙個三位數,分離出它的百位,十位與個位,反轉後輸出 include int main md是輸出m位的十進位制數,不足m位的補空格,超出m位的輸出實際位數 0md是...

程式設計入門

程式設計 資料結構 演算法 一 資料結構 1 資料元素 是組成資料的 有一定意義的基本單位。如 人 2 資料項 乙個資料可以由若干個資料項組成,根據自己的需要,資料項是不可分割 的最小單位。如 如人的耳 鼻 嘴等。3 資料物件 是性質相同的資料元素的集合,是資料的子集。4 資料結構 是相互之間存在一...

程式設計入門

一.程式設計過程 1.分析 分析所給定的條件,最後結果以及問題規律 2.設計 3.編碼 4.測試 5.排錯 6.編寫文件 包含 設計者,程式名稱,功能,執行環境,輸入資料,注意事項,裝入啟動 二.程式設計方法 1.面向過程 分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現。2.物件導向 ...