本篇內(nèi)容介紹了“如何理解Csh的基本語法”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
我們一直強調(diào)網(wǎng)站建設、成都做網(wǎng)站對于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對待,選擇一個安全靠譜的網(wǎng)站建設公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過程中的有力推手。專業(yè)網(wǎng)絡公司不一定是大公司,創(chuàng)新互聯(lián)公司作為專業(yè)的網(wǎng)絡公司選擇我們就是放心。在*unix系統(tǒng)中,常用的shell有sh,bash,csh/tcsh, ksh.
sh來自于systemV的Unix,是傳統(tǒng)的Unix的shell,直到現(xiàn)在很多的系統(tǒng)管理員仍然喜歡使用sh。
bash來自于BSD Unix,語法非常類似于C語言,所以通常有C/C++編程背景的開發(fā)人員最喜歡使用。
ksh是對sh的擴展,且吸收了csh的一些有用的功能,但是由于開始ksh的license是AT&T,所以后來出現(xiàn)了很多的ksh的開源版本,例如mksh,pdksh等。
bash是現(xiàn)在很多Linux的發(fā)行版中默認的shell,綜合了其他shell的很多優(yōu)點。
下面描述csh的一些基本的語法(在sh環(huán)境中執(zhí)行csh切換到csh環(huán)境):
1) 變量
通過set來定義局部變量x,通過$x或${x}來使用變量x的值,$%x表示變量的值的長度, $?x來判斷變量x是否設置,如設置則為1,否則為0。
代碼如下:
set x = 5
echo $x
echo ${x}kg
echo $%x
全局變量的定義setenv v value 該變量將被此shell派生的所有子shell繼承。
$$表示當前進程的PID, $status 或 $? 表示退出狀態(tài)。
2)數(shù)組
定義數(shù)組myarr, 通過$myarr[index]來訪問數(shù)組中的值,注意index是從1開始的。通過$myarr或$myarr[*]來訪問數(shù)組所有的元素。通過$#myarr來查看元素的個數(shù)。
代碼如下:
set myarr = (str1, str2,str3)
echo $myarr[2]
echo $myarr
echo $myarr[*]
3)命令替換
通過set x = `cmd`來執(zhí)行命令,且結(jié)果賦值給變量。
代碼如下:
set d = `date`
echo $d
echo $d[6]-$d[2]-$d[3]
4)命令行參數(shù)
通過$argv[1],$argv[2]或$1,$2來訪問命令行參數(shù)。命令行參數(shù)的個數(shù)為$#argv。
5)文件名擴展的元字符
只能使用?,*,[abc],[a-c]。
6)IO重定向和管道
將命令的輸出重定向到文件為>。
將命令的輸出重定向并追加到文件為>>。
將命令的輸入重定向到文件為<。
將命令的報錯信息重定向到一個文件(cmd>/dev/tty)>&errors。
將命令的輸出和錯誤輸出分別重定向(cmd > goodstuff) >& badstuff。
將命令的輸出和報錯信息重定向到一個文件cmd>&file。
將命令的輸出經(jīng)管道發(fā)往另一個命令cmd|cmd.
將命令的輸出和報錯信息經(jīng)管道發(fā)往另一個命令cmd|&cmd。
條件語句為 cmd && cmd 或 cmd || cmd。
command<<WORD 表示將command的輸入重定向為從第一個WORD處開始,到下一個WORD處之間的內(nèi)容(即here文檔)。
7)從鍵盤讀取并保存到變量中
代碼如下:
set var = $<
8)算術(shù)
代碼如下:
@ var = 5 + 5
echo $var
@ v2 = $var + 3
echo $v2
9)代字符號擴展
~username 表示username的home目錄。
10)別名
alias m more 為more創(chuàng)建別名m。
alias 列出所有的alias。
unalias m 用來刪除more的alias定義。
11)初始化文件
.login 在登錄時執(zhí)行的文件。
.cshrc 在每次調(diào)用shell時都執(zhí)行的文件。
12) label 和 goto
csh中沒有函數(shù)的概念,使用類似windows批處理中的label和goto。
代碼如下:
goto label
......
label:
....
13) if/else/switch/case
代碼如下:
if(expression)then
commands
endif
if {(command)} then
commands
endif
if(expression) then
commands
else if(expression) then
commands
else
commands
endif
switch("$value")
case pattern1:
commands
breaksw
case pattern2:
commands
breaksw
default:
commands
breaksw
endsw
14 while/foreach
代碼如下:
while(expression)
commands
continue
break
end
foreach var (wordlist)
commands
end
15、repeat
repeat表示重復執(zhí)行后面的命令。
代碼如下:
repeat 3 "echo helloworld"
16、csh中設置環(huán)境變量PATH的方法
csh中使用path代替PATH,設置類似于數(shù)組的使用。
代碼如下:
set path = ($path /home)
echo $path
echo $PATH
17、source等價于其他shell中的.
source使得程序在當前的shell中被執(zhí)行,而不是派生子進程來執(zhí)行。
18、轉(zhuǎn)義字符與單雙引號
引號必須成對出現(xiàn),而且必須在同一行上配對??梢杂梅葱备軄磙D(zhuǎn)義換行符,這樣就能在下一行配對了。
單引號可用于保護雙引號,雙引號也可以用來保護單引號。
單引號保護除歷史字符(!)之外的所有元字符不被解釋。
雙引號保護除歷史字符(!),變量替換字符($)和反引號(用于命令替換)之外的所有元字符,使其不被解釋。
19、歷史command
history用來查看command執(zhí)行的歷史。
!!用來執(zhí)行上一條命令。
20、pushd和popd用來維護目錄棧
21、csh -vx用來顯示輸入的原樣和變量替換后的腳本,用來幫助調(diào)試。
22、在腳本中處理中斷
代碼如下:
onintr finish
<script continues here>
finish:
onintr - # Disable further interrupts
echo Cleaning temp files
exit 1
onintr 命令后跟一個標號名,finish是用戶自定義的標號。如果發(fā)生中斷,控制將被轉(zhuǎn)移到finish標號。通常該行位于腳本的開頭。除非當程序正在執(zhí)行時按ctrl+C(中斷鍵),此時控制將被轉(zhuǎn)移到該標號。onintr - 表示屏蔽所有的中斷,此時按下ctrl+C將會被忽略。
23、noclobber 禁止覆蓋變量,設定 $noclobber 預設變量改變輸出重定向特性.
變量設定語法 set noclobber
取消變量設定語法 unset noclobber
這個 noclobber 變量,它的功能便是停止重定向符號“>”的覆蓋(overwiting)已存在文件以及符號“>>”要將字符寫入一個不存在的文件時,自動產(chǎn)生該文件的特性。
僅用兩個例子讓讀者明白,設定后的實際使用狀況。
例子一:
代碼如下:
% ps axu > testfile
% set noclobber
% echo "test set noclobber" > testfile
testfile: File exists.
% echo "test set noclobber" >! testfile
%
例子二:
代碼如下:
% set noclobber
% cat /etc/passwd >> nopass
nopass: No such file or directory
% cat /etc/passwd >>! nopass
%
“如何理解Csh的基本語法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
分享名稱:如何理解Csh的基本語法-創(chuàng)新互聯(lián)
瀏覽路徑:http://vcdvsql.cn/article16/iisdg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設計公司、網(wǎng)站導航、動態(tài)網(wǎng)站、Google、電子商務、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容