TCSH编程(2)
條件測(cè)試
?
test命令
1,測(cè)試文件狀態(tài)
表達(dá)方式:
test condition
返回值:0為成功,其他為失敗。
文件測(cè)試狀態(tài)
| -d?????????????????? 目錄 | -L???????????????????????? 符號(hào)連接 |
| -s?????????????????? 文件長度大于0,非空 | -u???????????????????????? 文件有suid位設(shè)置 |
| -f?????????????????? 正規(guī)文件 | -r????????????????????????? 可讀 |
| -w???????? ????????可寫 | -x????????????????????????? 可執(zhí)行 |
1,邏輯操作符
?
-a 邏輯與,操作數(shù)兩端均為真,結(jié)果為真,否則為假。
?
-o 邏輯或,操作數(shù)兩邊一邊為真,結(jié)果為真,否則為假。
?
! 邏輯否,條件為假,結(jié)果為真。
?3,字符串測(cè)試
?
格式:test “string” string_operator “string” (其中string_operator為操作符)
?
| =??????????????????????? 兩個(gè)字符串相等 | !=??? ??????????????????????????兩個(gè)字符串不等 |
| -z?????????????????????? 空串 | -n???????????????????????????????? 非空串 |
?
4,測(cè)試數(shù)值
格式:test “number” number_operator “number”(其中number_operator為操作符)
| -eq?????????? 數(shù)值相等 | -ne?????????? 數(shù)值不相等 |
| -gt??????????? 第一個(gè)數(shù)大于第二個(gè)數(shù) | -lt????? ???????第一個(gè)數(shù)小于第二個(gè)數(shù) |
| -le??????????? 第一個(gè)數(shù)小于等于第二個(gè)數(shù) | -ge?????????? 第一個(gè)數(shù)大于等于第二個(gè)數(shù) |
?
expr 命令
e x p r命令一般用于整數(shù)值,但也可用于字符串。一般格式為:
expr argument operator argument
e x p r也是一個(gè)手工命令行計(jì)數(shù)器。
例如:expr 100 + 100
200
?
expr 3 \* 3
9
expr 3 / 3
1
注意:使用乘號(hào)時(shí),必須用反斜線屏蔽其特定含義。因?yàn)?/span>s h e l l可能會(huì)誤解顯示星號(hào)的意義。
e x p r命令用于記數(shù):
number = 1
number = `expr $number + 1`???????????? (反引號(hào)即替代命令,expr $number + 1是命令,不能放在等號(hào)右邊。如果直接number = expr $number + 1 ,則會(huì)報(bào)錯(cuò)“set: varibale name must begin with a letter”? )?
?
命令執(zhí)行順序
在執(zhí)行某個(gè)命令的時(shí)候,有時(shí)候需要依賴前一個(gè)命令是否執(zhí)行成功。Tcsh中的命令執(zhí)行順序控制符
&&
格式:commands && commands
含義:當(dāng)左邊的命令返回真后(執(zhí)行成功),右邊的命令才能執(zhí)行
例子:
>mv? /apps/bin?? /apps/dev/bin && rm –r? /apps/bin
?
||
格式:commands || commands
含義:當(dāng)左邊的命令沒有執(zhí)行成功則執(zhí)行右邊的命令。
例子:cp 1.txt? ob.txt || echo “the cp failed”
?
()
格式(commands1;commands2;commands3;…..)
含義:在當(dāng)前的shell中將括號(hào)中的命令一起合并執(zhí)行。
?
Shell引用類型
一:引用的必要性:
我們?cè)谑褂梦淖肿址臅r(shí)候,經(jīng)常會(huì)因?yàn)樯儆没蚴锹┯靡枚斐梢恍┞闊?。比如說:
??????????? echo Hit the star button to exit? *
則在屏幕上顯示的將是Hit the star button to exit 當(dāng)前目錄下的所有目錄。因?yàn)闆]有用””所以,shell編譯器把*解釋為當(dāng)前所有目錄。
?
二:Shell的引用類型
?
| 雙引號(hào) | “” |
| 反單引號(hào) | `` |
| 單引號(hào) | ‘’ |
| 反斜杠 | / |
?
雙引號(hào):
??????????? 使用雙引號(hào)可引用除字符?? $?? `?? /? 外的任意字符和字符串,必須成對(duì)出現(xiàn)。主要是用它來將字符串賦值給變量,實(shí)際上和直接賦值變量沒有差異。
>Set temp = “date”
>Echo $temp
>date
反單引號(hào):
把UNIX命令放在反引號(hào)(` `)中,就能把它的輸出結(jié)果賦值給變量或是字符串,一一操作被稱為命令替換。如果命令的輸出賦給一個(gè)變量,則將會(huì)被保存成一個(gè)數(shù)組或是詞表。
?
單引號(hào):
??????????? 可以保護(hù)除了!之外的所有元字符不被解釋,并且可以保護(hù)雙引號(hào),必須在同一行內(nèi)配成對(duì)。
>set temp = boy
>echo ‘$temp’
>$temp
>echo “$temp”
>boy
?
反斜杠:
??????????? 如果下一個(gè)字符有特殊含義,反斜杠防止shell誤解其含義,即屏蔽其特殊含義。(含有特殊含義的字符包括 &? *? +? ^? $? `? “? |? ? )
例如:為了屏蔽*的特殊含義,而是想僅僅輸出一個(gè)*號(hào)的話,則語句寫成
>echo \*.則編譯器就會(huì)忽略*的特殊意義,而僅僅把它當(dāng)成一個(gè)一般的字符輸出
?
轉(zhuǎn)載于:https://www.cnblogs.com/JeffChen/archive/2008/01/09/1032412.html
總結(jié)
- 上一篇: WCF中的异常处理
- 下一篇: (原) ora-12705 cannot