不是SHELL的SHELL—TCSH SHELL 編程(1)

來源:互聯網
上載者:User

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有一系列的運算子來分別對字串進行測試比較.Regex可以包含shell指令碼的指令的字串.如:
if ( $var =~[Hh]* ) then #如果變數$var以字母是大寫/小寫Hh開頭,的字串
echo information #執行命令
endif #結束
有很多測試檔案的操作與BASH完全相同.如:
if ( -r myfile ) then #測試myfile是否可讀
echo info
endif
測試運算式的基本操作:
字串比較: 功能
== 是否相等,若相等返回真
!= 是否不等,若不等返回真
=~ 字串和模式進行測試是否相等(模式為任意Regex)
!~ 字串和模式測試是否不等(模式為任意Regex)檔案測試: 功能
-e 測試檔案是否存在
-r 測試檔案是否可讀
-w 測試檔案是否可寫
-x 測試檔案是否可執行
-d 測試檔案名是否為目錄
-f 測試檔案是否為普通檔案
-o 測試檔案是否被使用者所擁有
-z 測試檔案是否為空白
邏輯運算子: 功能
&& 與運算,兩個條件同時蠻族
|| 或運算,有一個條件滿足
! 取反


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.