TCSH shell不同于其他的shell,因為控制結構更符合程序設計語言的格式.例如TCSH 的test條件的控制結構是表達式,而不是 linux 命令,得到的值是邏輯值true或false,TCSH的表達式與C語言中的表達式基本相同. 一 TCSH shell變量,腳本, 參數用戶可以在shell中定義變
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命令和重定向符號結合$<將用戶輸入的任何數據讀入標準的輸入中.下例中,把用戶輸入讀入string變量中.
%set string=$<
abc
%echo $string
abc
能夠把提示符放置到相同的行用作echo的輸入.TCSH使用一個特殊的選項-n,將消除輸出字符串中的回車符.光標將保留在輸出字符串的結尾處.
%echo -n please enter a string
%cat hello
#
echo -n "please enter a string:"
set string=$<
echo "the value of string is $string"
%chmod u+x hello
%hello
please enter a string:hello
the value of string is hello
%
三 操作符TCSH
它有一系列標準的賦值,算術和關系運算以及重定向和后臺操作等函數賦值運算符
功能說明
= 賦值操作
+= 先加再賦值
-= 先減再賦值
*= 先乘再賦值
/= 先除再賦值
%= 取余再賦值
++ 自增量1
-- 自減量1
算術運算符 說明
- 負號
+ 加法
- 減法
* 乘法
/ 除法
% 取余
關系運算符 說明
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于
== 等于
重定向和管道符TCSH支持標準輸入和標準輸出的重定向和管道操作.如果設置了noclobber特征,要用重定向操作重寫當前文件,需要用符號>!代替>
四 控制結構
同其他shell一樣,TCSH也有一系列的控制結構控制腳本的命令的執行.while和if控制結構是最常用的控制結構.switch和foreach是更專用的控制結構.switch是if條件的限定形式,檢查數值是否等于一系列可能的數值中的一個數值.foreach是循環結構的限定形式.瀏覽數值列表,給變量賦新的數值.TCSH不同的控制結構列表:
條件控制結構; 功能
if (expression) then 如果expression為真,則執行commands commands
endif
if (expression) then 如果expression為真,則執行command1,否則執行command1 command2.
else
command2
endif
switch (string) 允許在幾條替換命令中選擇,string為不同的模式case pattern:
commands
breadsw
default:
commands
endsw
循環控制結構: 功能while (expression) 只要expression為真,則重復執行commands,commands 直到expression為假時跳出循環end
foreach variable (argument-list)迭代循環獲得和argument-list中一樣多的參數commands (每次循環variable被設置為列表的下一個參數;end 操作方式同BSH)
TCSH中的控制結構有別于其他的shell,因為它更接近編程語言(C).TCSH的條件表達式的值為true/false.BASH和TCSH主要區別在于TCSH的結構不可重定向或進行管道輸出.
五 測試表達式
()if和while控制結構把表達式用作測試.表達式測試的結果為非零(1)表示真,而零(0)表示假(跟BASH相反).測試表達式可由算術/字符串比較,但是字符串只能作相等和不相等的比較.而且表達式必須要在()括號內.如:
if (expression) then
command
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 測試文件是否為空
邏輯運算符: 功能
&& 與運算,兩個條件同時蠻族
|| 或運算,有一個條件滿足
! 取反
共5頁: 1 [2] [3] [4] [5] 下一頁
原文轉自:http://www.ltesting.net