csh簡單語法

2021-05-23 14:58:26 字數 4241 閱讀 5390

csh簡單語法

csh一、變數

1. 字串變數

這個部分和bourne shell的變數一樣,只不過在設定變數值時不能使用bourne

shell的方式,而必須打:

set var=value

2. 數字運算

基本上c shell 沒有數字變數,但c shell 卻有簡單的方法處理數字運算:

@ var operator expression

operator可以是c 語言中的=, +=, -=,……,而expression則是表示式。運

算式的運運算元如下:

a. () 改變計算的順序

~@b. ~ 位元not運算

@~~! 邏輯否定

c.% 取餘數

/ 除* 乘

- 減+ 加

d.>> 右移

<< 左移

e.> 大於

< 小於

>= 大於等於

<= 小於等於

!= 不等於

== 等於

f.& 位元and運算

^ 位元xor運算

| 位元or 運算

g.&& 邏輯and

|| 邏輯or

除此之外,我們也可以檢驗乙個檔案的狀態,如下

-n filename

而-n可為下列之一

-d 檔案是乙個目錄檔案

-e 檔案存在

-f 檔案為一般的檔案

-o 使用者擁有這個檔案

-r 使用者可以讀取這個檔案

-w 使用者可以寫入這個檔案

-x 使用者可以執行這個檔案

-z 檔案長度為0

@ count = count + 1

@ flag = -e /users/cc/mgtsai/mail && -e /usr/spool/mail

3. 陣列

在c shell 中,我們可以宣告陣列變數,方式如下

set var=(val1 val2 ……)

而var[1]之值為val1,var[2]之值為val2……。而$var代表整個陣列。我們

可以用$#var 來計算陣列個數,也可以用$?var 來檢查某個變數是否已宣告。

4. 特殊變數

$argv 和bourne shell的$*相似,只不過這是乙個陣列。

$argv[n] 和bourne shell的$n相同,但不受個數限制。

$#argv 和bourne shell的$#相同

$home 和bourne shell的$home相同

$path 和bourne shell的$path相似,只不過這是乙個陣列

$prompt 和bourne shell的$ps1相同

$shell shell的路徑名稱

$status 和bourne shell的$?相同

$$ 和bourne shell的$$相同

$< 鍵盤輸入

二、執行命令

基本上和bourne shell相同,只有一點在bourne shell中的」.」 命令在c shell 中

則為」source」命令。

三、流程控制

在c shell 中流程控制不像bourne shell中一般需要使用test命令。相反地,它和

c 語言類似只要在條件中寫出運□式即可。當運算結果不為零時,其值為真,為零

時其值為偽。以下是c shell的流程控制

1. if

語法如下

if (expression) ******-command

2. goto

語法如下

goto label

這時程式會跳至以l」label:」開頭的那一行執行

if ($#argv == 2) goto goodargs

echo 『please use two arguments.』

exit

goodrags:

…3. if then else

這和bourne shell的if then, if then else, if then elif 相似。語法如下

a. if (expression) then

commands

endif

b. if (expression) then

commands

else

commands

endif

c. if (expression) then

commands

else if (expression) then

commands

else

commands

endif

4. foreach

這和bourne shell的for in相似。語法如下

foreach var (arg-list)

commands

end5. while

這和bourne shell的while相似。語法如下

while (expression)

commands

end6. break及continue

這和bourne shell的break 及continue相似,是用來中斷foreach 及while 回

圈。7. switch

這和bourne shell的case相似。語法如下

switch (string)

case pat1:

commands1

breaksw

case pat2:

commands2

breaksw

case pat3:

commands3

breaksw

endsw

□附錄a expr命令

命令格式

expr expression

敘述expression是由字串以及運運算元所組成,每個字串或是運運算元之間必須用空白隔開

。下表是運運算元的種類及功能,而優先順序則以先後次序排列,我們可以利用小括

號來改變運算的優先次序。其運算結果則輸出至標準輸出上。

: 字串比較。比較的方式是以兩字串的第乙個字母開始,而以第二個字串的

字母結束。如果相同時,則輸出第二個字串的字母個數,如果不同時則傳

回0 。

* 乘法

/ 除法

% 取餘數

+ 加法

- 減法

< 小於

<= 小於等於

= 等於

!= 不等於

>= 大於等於

> 大於

& and運算

| or運算

當expression中含有」*」, 「(」, 「)」 等符號時,必須在其前面加上」」 ,以免被

shell 解釋成其它意義。

expr 2 * ( 3 + 4 ) 其輸出為14

□附錄b test命令

命令格式

test expression

敘述expression中包含乙個以上的判斷準則以作為test評詁的標準。兩準則間用」-a」代

表邏輯and 運算,」-o」代表邏輯or運算,而在準則前放置一」!」 代表not 運算。如

果沒有括號,則優先權則為」!」 > 「-a」 > 「-o」 。和expr命令相同,相使用左右括

號時,必須在其前面加上」」 。以下是有關準則的敘述(合敘述時傳回真,否則傳

回偽):

string string不為空白字串

-n string string的長度大於0

-z string string的長度等於0

string1=string2 string1等於string2

string1!=string2 string1不等於string2

int1 -gt int2 int1大於int2

int1 -ge int2 int1大於等於int2

int1 -eq int2 int1等於int2

int1 -ne int2 int1不等於int2

int1 -le int2 int1小於等於int2

int1 -lt int2 int1小於int2

-r filename 檔案可讀取

-w filename 檔案可寫入

-x filename 檔案可執行

-f filename 檔案為一般檔

-d filename 檔案為目錄

-s filename 檔案為非空的一般檔

test -r 「$filename」 -a -s 「$filename」

csh簡單語法

csh簡單語法 csh一 變數 1.字串變數 這個部分和bourne shell的變數一樣,只不過在設定變數值時不能使用bourne shell的方式,而必須打 set var value 2.數字運算 基本上c shell 沒有數字變數,但c shell 卻有簡單的方法處理數字運算 var ope...

Bash與Csh中的變數

zz bash中的變數 1 定義 直接使用 變數名 值 的格式來定義,不區分字串與數字值,統統認為是乙個串.如 username bdxnote 2 引用 在變數名前加上美元符號 即可引用該變數的值.如 echo my name is username 3 命令列引數 n,n的取值範圍為0 9 n ...

XPath 簡單語法

xpath 是xml的查詢語言,和sql的角色很類似。以下面xml為例,介紹xpath 的語法。empire burlesque bob dylan 10.90 hide your heart bonnie tyler 9.90 greatest hits dolly parton 9.90 定位節...