Search
Search
在*unix系統中,常用的shell有sh,bash,csh/tcsh, ksh. sh來自於systemV的Unix,是傳統的Unix的shell,直到現在很多的系統管理員仍然喜歡使用sh。
#2. C shell - IBM
C shell 是一種互動式指令直譯器,也是一種指令程式設計語言。它使用的語法和C 語言相似。 C shell 由csh 指令來起始。 當您登入時,csh 指令會先搜尋全系統設定 ...
#3. ntu cc
而在UNIX中大家最常使用Bourne Shell以及C Shell ,所以這堂課就介紹這兩種Script的 ... 以下介紹各種流程控制: 1. if then 語法以及流程圖如下語法以及流程圖如下│ ...
第一行的第一個字必須是#,它代表此檔案是一個C shell script。 ... 語法: if (expression) command. //若expression的結果為真,將執行command.
這種shell的語法類似於C語言,與Bourne shell相比,C shell有不少特別的功能,比如 aliases (別名)、command history(命令的歷史)。目前C shell已不再被廣泛使用,後繼 ...
#6. [CSH/TCSH] 使用tcsh SHELL #1 --變數、控制和迴圈 - 精讚
在FREEBSD或LINUX中使用TCSH SHELL,進行一些基本的指令操作。 ... 語法. 1 foreach var (wordlist) cmd(s) break <==跳出迴圈
#7. [Cshell]Cshell基本語法--- 從入門到精通 - CSDN博客
如何向CShell Script傳遞參數? 如何将命令行的参数传给script呢? 可以这样: 键入script名, 后面跟任何你想要传递的参数. Cshell把script名后面的 ...
#8. 5. Shell腳本語法
命令 test 或 [ 可以測試一個條件是否成立,如果測試結果為真,則該命令的Exit Status為0,如果測試結果為假,則命令的Exit Status為1(注意與C語言的邏輯表示正好 ...
#9. CSH - 中文百科知識
shell 。 csh 是linux、unix命令 csh 命令. 用途. 調用C shell。 語法. csh [ ...
#10. [Shell Scripting] 教學:基本概念| 開源技術教學文件網
會願意學shell script 設計的程式人,通常也是老練的類Unix 系統使用者。 ... Csh 使用一套類似於C 的語法,和sh 不相容。Tcsh 則是csh 的增強版。
#11. Cshell的基本语法和基础知识 - 新浪博客
shell 简介. 在*unix系统中,常用的shell有bash, sh, csh/tcsh, ksh.等。 Linux 操作系统缺省的shell 是Bourne Again shell,它是Bourne shell的扩展, ...
#12. 一篇文章從了解到入門shell
Linux下有bash / sh / ksh / csh/zsh等一般情況下,習慣把命令 ... C shell 使用的是「類C」語法,csh是具有C語言風格的一種shell,tcsh是增強版本 ...
#13. c shell語法 - 軟體兄弟
c shell語法,指令使用語法的第一項是指令名稱,然後接著是指令的選項(options)。有時選項後需加上... 此部份則有C Shell 所提供的“wildcard”特殊功能可運用。
#14. linux的學習Ⅷ(shell基礎) - tw511教學網
Korn shell 的語法與Bourne shell 相同,同時具備了C shell 的易用特點。許多安裝指令碼都使用ksh ,ksh有42條內部命令,與bash相比有一定的限制性。
#15. 認識SHELL
BASH (Bourne Again SHell)- Shell. BASH 之所以會被各大Linux 套件採用為預設的shell﹐除了它本身是open source 程式之 ... 不同的解釋器所使用的句子語法都不一樣。
#16. Shell Programming
不同的Shell語法,會有一定程度的差異。 Borne Shell(/bin/sh)是UNIX作業系統中最早存在 ... echo -e "Please input your name: \c" #(\c迫使游標不換行) read name
#17. 一文詳解shell程式設計(shell程式設計筆記) - 程式人生
常見的Shell 有sh、bash、csh、tcsh、ash 等。 ... 設計的,這個shell 的語法有點類似C語言,所以才得名為C shell ,簡稱為csh。 tcsh:tcsh 是csh 的 ...
#18. SHELL - 使處理程序的彈性更大
【語法】. echo [arg] ... echo -n [arg]. 【說明】echo 指令會將每個arg 的內容以空白字元分隔, ... \c, 在輸出時,不加上換行字元 ... shl(shell layer manager).
#19. CSH:簡介,用途,語法,描述,注意 - 中文百科全書
CSH ,是一種計算機中的linux、unix命令,用來調用C shell。 基本介紹. 中文名:CSH; 外文名:CSH; 定位 ...
#20. Shell程式設計簡介 什麼是shell
Korn shell可執行檔檔名為ksh,其在程式的設計方面是使用Bourne shell的語法,又加上了tcsh的alias、job controll、指令列編輯等等優點。但其最大缺點為ksh並不是freeware ...
#21. 第五章- C shell
使用这类语法的命令通常有. Page 6. 第五章. 296 cat、echo、ex 和sed。如果文本text 被引起来(用任何shell 引用机制),则该. 输入会按其原来的意思逐字地 ...
#22. 第二十一章Shell Script
因此,為了能寫出一個shell Script,你必須先對UNIX 指令有初步的認識。 ... 除了使用expr 外,我們還可以使用下列這種特殊語法: ... eval $`echo $a$b$c`
#23. Bourne shell, perl與C語法比較 - Study-Area
Next: 變數 Up: Scripts大集合 Previous: module Contents. Bourne shell, perl與C語法比較. 這個其實是我年紀大了有時記不住用的。C, shell 與perl是我常用到的工具, ...
#24. C Shell - 恐怖剪貼簿
語法 本章講解的內容是C shell 獨有的一些符號運用。解說順序如下: 特別檔案 檔名中介符號 引用符號 指令形式 重導向形式
#25. Shell 教程 - 菜鸟教程
Shell 教程Shell 是一个用C 语言编写的程序,它是用户使用Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供 ...
#26. CSH_百度百科
C shell 是一個交互式命令解釋器和一種命令編程語言,採用的語法類似於C 編程語言。shell 是交互式地從終端鍵盤或者是從一個文件來執行命令的。這個csh 命令調用了C ...
#27. 几种常见的Shell:sh、bash、csh、tcsh - C语言中文网- 编程帮
Linux上常见的Shell脚本解释器有bash、sh、ash、csh、ksh,习惯上把它们称作一 ... Joy 设计的,这个shell 的语法有点类似C语言,所以才得名为C shell ,简称为csh。
#28. 第十三章Shell Script 程式設計 - 翻轉工作室
語法 ,相信這些敘述語句在其他Shell 應該都可以相容。 13-1-1 Shell Script 執行 ... 或csh(C Shell),以bash 為例如下:($bash shell.scr). $ bash ex7_1.
#29. csh - 手册页部分1: 用户命令
csh (C shell)是一个具有类C 语言语法的命令解释器。它为交互用户提供了Bourne shell 没有的许多便利功能,包括文件名完成、命令别名设置、历史记录替换、作业控制 ...
#30. C shell - C殼 - 國家教育研究院雙語詞彙
名詞解釋: 為Unix作業系統的一種命令行解譯器和手跡語言,源自於柏克萊大學的Unix作業系統。其語法格式和C語言相似,且在人機交互作用方面有較好的功能,如有輸入命令 ...
#31. 使用者介面
Linux 預設使用的shell 是bash,可利用指令「chsh」更改預設值,例如:chsh -s /bin/tcsh。欲知系統中其他可供使用 ... 設定陣列內容語法:name[i]=陣列值, i 為索引值.
#32. 無題
這是因為, 在UNIX Shell Programming 中, 有許多都還是用Bourne Shell 的語法寫成的, ... X ( SunOS ) 而一般使用者或許用C Shell 的增強版tcsh 或bash ( Bourne Again ...
#33. Day 22 Shell - iT 邦幫忙
csh 是由柏克萊大學的Bill Joy 設計的,這個shell 的語法有點類似C語言,所以才得名為C shell ,簡稱為csh,共有52個內部命令。該shell 其實是指向/bin/tcsh這樣的一個 ...
#34. tcsh 基本命令 - 博客园
一般linux 默认shell 是 bash,但是IC公司用的较多的是tcsh,二者的语法和内建命令相差较大,关于bash,网上资料非常多,这里主要记录 tcsh 的语法和 ...
#35. shell基本知識 - IT人
Bourne shell用來程式設計,C shell用來互動。ksh結合了所有的C shell的互動式特性,並融入了Bourne shell的語法。它還新增了數學計算,程式 ...
#36. 非常详细-shell编程基础语法大全 - 知乎专栏
csh (C Shell):由Bill Joy开发,随BSD UNIX发布,它的流程控制语句很像C语言,支持很多Bourne Shell所不支持的功能:作业控制,命令历史,命令行编辑。
#37. 什么是c shell(csh)? -技术百科的定义- 音讯- 2022
C shell 从其语法中获得名称,该语法旨在类似于C编程语言。 C Shell引入了旨在简化在命令行中交互使用的功能,尽管与其他Shell一样,它也可以编写脚本。
#38. C Shell Programming. - ppt download - SlidePlayer
特殊字元$ : 代表shell變數名稱的開頭. # : 註解的開始. ... Presentation on theme: "C Shell Programming. ... 6 If 條件語法: if (expression) command
#39. UNIX作業環境(SHELL)之設定
4.csh --C shell語法與C很像,提供指令編輯、指令記錄,指令自動完成功能,在Linux中/bin/csh是一個符號連結到/bin/tcsh。 5.tcsh --Enhanced C shell,是csh的加強版 ...
#40. 網路農夫-- UNIX C Shell -- 3-9-1 單引號( ' )的運用(single ...
像以上的語法使用“data a1”因為有space 字元的分格而被當成是兩個獨立的字串,所以該指令的“data”與“a1”分別被C shell 解譯成,“a1”是指令ls -l 的檔案引數;“data”則 ...
#41. Csh的基本語法介紹- IT閱讀 - ITREAD01.COM - 程式入門教學
在*unix系統中,常用的shell有sh,bash,csh/tcsh, ksh. sh來自於systemV的Unix,是傳統的Unix的shell,直到現在很多的系統管理員仍然喜歡使用sh。
#42. CShell
Cshell 把script名后面的字符按照词(words)来划分后传递给一个叫做argv的变量数组, ... 控制循环的foreach 语法为: foreach variable (variable_value lists) ...
#43. UNIX C Shell -- 4-2-12 ignoreeof 忽略使用eof 退出變數
4-2-12 ignoreeof 忽略使用eof 退出變數. 使用語法set ignoreeof. 在一般的情況下,如果我們在C shell 中使用CTRL-d,所造成的結果便是將該C shell 終結,如果在login ...
#44. 1.2 shell脚本语言的种类及优势
i 种类shell脚本语言是==弱类型语言(无需定义变量的类型即可使用)==,在unix/Linux中主要有两大类shell:一类是Bourne shell,另一类是C shell ##
#45. Linux csh Shell循环-之路教程
Linux csh Shell循环C外壳(csh)while循环foreach循环示例语法语法如下: while(condition) command1 command2 end set i = 1 while ( i < 5 ) command1 command2 @ i++ ...
#46. shell - 从shell 脚本到c shell 脚本有哪些语法变化?
shell - 从shell 脚本到c shell 脚本有哪些语法变化? 原文 标签 shell sh csh. 我才知道 .sh 文件不使用 set 和周围的空间 = 不允许,而这在 .csh 中是允许的文件。
#47. Csh常用语法 - 简书
字符串中的! 是特殊字符(执行历史命令), 所以需要加上\ 使用。 参数处理. bash 兼容: $0 $1-9 $* ...
#48. SHELL - 國立政治大學資訊科學系
... 差異,所以我們不能將寫給用Shell A 語法寫出的shell script 不能用Shell B 來執行。比較風行的版本是原始版的Bourne Shell, Korn Shell, Bash, 以及C Shell,蘋果 ...
#49. 给初学者的入门知识
4.shell 程序中的test 命令. 在bash/pdksh 中,命令test 用于计算一个条件表达式的值.他们经常在条件语句和循环语句中被用来判断某. 些条件是否满足. test 命令的语法 ...
#50. 一篇文章從瞭解到入門shell_開源中國- MdEditor - 古詩詞庫
Linux下有bash / sh / ksh / csh/zsh等一般情況下,習慣把命令 ... C shell 使用的是“類C”語法,csh是具有C語言風格的一種shell,tcsh是增強版本 ...
#51. Shell 函數(Visual Basic for Applications) | Microsoft Docs
語法. Shell(pathname, [ windowstyle ]). Shell 函數語法具有下列具名引數: ... Dim RetVal RetVal = Shell("C:\WINDOWS\NOTEPAD.
#52. shell指令碼簡介 - w3c學習教程
shell 指令碼簡介,常見的shell有sh bash csh tcsh ash shsh 的全稱 ... 設計的,這個shell 的語法有點類似c語言,所以才得名為c shell ,簡稱為csh。
#53. C Shell - Wikiwand
C shell (csh)是Unix shell的一種,由比爾·喬伊在BSD系統上開發。C shell脫胎於Unix第六版的/bin/sh,也是Bourne shell的前身。這種shell的語法類似 ...
#54. Shell基本知識-技術 - 拾貝文庫網
C Shell 主要在BSD版的Unix系統中使用,其語法和C語言相類似而得名。 Bash Bash 與sh相容,現在使用的Linux就是使用Bash作為使用者的基本Shell。 Linux中Shell.
#55. Linux 學習之shell相關設定 - w3c菜鳥教程
檢視使用者的shell型別是bash shell 而cshrc是執行在c she. ... 更適合的變種shell,它的語法與c語言很相似。linux為喜歡使用c shell的人提供了tcsh。
#56. shell 的型別有哪些? - 要強網
不同的shell具備不同的功能,shell還決定了指令碼中函式的語法,Linux中預設的shell是/bin/bash,流行的shell有ash、bash、ksh、csh、zsh等,不同 ...
#57. shell學習(二) - 程序員學院
linux shell(二). shell程式中的test命令在bash pdksh中,命令test用於計算一個條件表示式的值他們經常在條件語句和迴圈語句中被 ...
#58. 檔案副檔名CSH : C Shell Script 是什麼? 如何開啟? - 檔案詞典
CSH 檔案是一種可以在BSD Unix系統上的C shell環境中運行的腳本語言檔案,其語法類似於C/C++。 支援的作業系統和可以開啟該檔案類型的相關軟體或應用程式. Windows, File ...
#59. linux中shell分多少種,都有什麼區別 - 多學網
bash :是linux標準預設的shell。bash由brian fox和chet ramey共同完成, ... 的,這個shell 的語法有點類似c語言,所以才得名為c shell ,簡稱為csh。
#60. Perl語言簡介
就我個人的經驗,除了C以外,如果能再懂shell script的語法是最好不過了,因為Perl中一些符號的使用和shell script是一致的。當然如果又懂得awk和sed那就更好了。Larry ...
#61. foreach语法在csh中 - 中国服务器网
如何从unix csh / tcsh shell执行一个基本的算术运算. 应该没有 in : foreach file ( . ) 请务必阅读停止使用(和教学)C-Shell 。
#62. bash shell script 程式設計
bash shell script 程式設計相信所有玩過Unix的人都會同意shell script 是一個 ... 的加強版。 awk 的語法很像C 語言,所以對會寫C 語言的人而言,這是一個很好用的 ...
#63. 「程式筆記」Shell Script 簡易筆記. 參考資料 - Medium
要執行運算式,其語法應為: $((運算式)) : n=1 m=2 echo $((n+m)). 才會輸出 3. 在Bash Shell 中內建原生不支援運算式,但我們可以使用expr、awk 等 ...
#64. [轉錄] UINX 的批次檔Shell Script -- YenYen 整理
而在UNIX中大家最常使用Bourne Shell以及C Shell ,所以這堂課就介紹這兩種Script的 ... 以下介紹各種流程控制: 1. if then 語法以及流程圖如下語法以及流程圖如下│ ...
#65. Shell基本語法知識 - 菜鳥學院- 菜鸟学院
2.csh(C Shell):由Bill Joy開發,隨BSD UNIX發佈,它的流程控制語句很像C語言,支持不少Bourne Shell所不支持的功能:做業控制,命令歷史,命令行 ...
#66. Shell Script簡介 - 開源互助社區
QUOTE:【導讀】在UNIX中大家最常使用Bourne Shell以及C Shell ,本文全面講解了Shell Script的這兩種Script的寫法前言在DOS ... 語法以及流程圖如下
#67. Csh的基本语法介绍- linux shell - 找一找教程网
bash 来自于BSD Unix,语法非常类似于C语言,所以通常有C/C++编程背景的开发人员最喜欢使用。 ksh是对sh的扩展,且吸收了csh的一些有用的功能,但是由于 ...
#68. 好站- 線上分析、解釋、檢查Shell Script
兩個Shell Script 分析工具的站, 將看不懂的Shell Script 可以丟上去分析、 ... Bash / Sh 寫Shell script 想要有個語法檢查的工具,而不是每次都直接 ...
#69. Top Ten Reasons not to use the C shell - 台部落
不是公司的默認環境是csh的話,真不想花太多時間看csh編程(還是bash ... 訪問手冊man 記不得命令名字時可以用關鍵字,語法是man -k 手冊頁有對應的 ...
#70. c shell 變數
C shell 對其本身在整體的環境控制與部份功能的設定和使用上,都有專屬的變數, ... 在上例的最後的符號“:”,它的後面沒有填上任何的目錄,這樣在語法上並沒有錯, ...
#71. tcsh shell 基本语法简介 - BiliBili
tcsh shell 基本语法简介 ... Shell 是一个用C 语言编写的程序,它是用户使用Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 编程跟 ...
#72. Shell指令碼入門 - 十佳評測
通常情況下,所有這些 shell 的語法相似度高達 95%。在十佳評測的系列教程中,我們將遵循 Bash shell 程式設計。當你在終端輸入任何文字時,為了確保 ...
#73. 簡明Linux Shell Script 入門教學 - TechBridge 技術共筆部落格
Shell Script 主要是使用在Linux 和MacOS 等Unix-like 作業系統的自動化操作指令的程式語言。其透過Unix shell 命令列直譯器來執行(我們這邊主要使用bash ...
#74. Linux之shell编程基础- 云+社区 - 腾讯云
csh C shell 使用的是“类C”语法,csh是具有C语言风格的一种shell,其内部命令有52个,较为庞大。目前使用的并不多,已经被/bin/tcsh所取代。
#75. c shell if语法 - 单词组词语法
c shell if语法. 你用括号的话应该是if (test aa == 1). a=10 if [ $a -gt 8 ];then ((a+=2)) else ((a++)) fi echo $a. '不可见shell 路径, ...
#76. shell script 條件判斷 - 邱小新の工作筆記
a && b || c, 如果a 是真,則執行b,如果a 是假,則執行c。 ... 萬用字元與正規表示法等等,所以如果要在bash 的語法當中使用中括號作為shell 的判斷 ...
#77. 常见的各种shell及其区别 - 文章整合
Bourne shell (sh) UNIX 最初使用,且在每种UNIX 上都可以使用。 · C shell (csh) csh,一个语法上接近于C语言的shell。 · Korn shell (ksh) 完全向上兼容 ...
#78. sh/bash/csh/Tcsh/ksh/pdksh等shell本质区别 - 阿里云开发者社区
它还包含了很多C Shell和Korn Shell中的优点,有灵活和强大的编辑接口,同时又很友好的用户界面。 csh(全称C Shell),是一种比Bourne Shell更适合的变种Shell,它的语法与C ...
#79. Unix/Linux 的find 指令使用教學、技巧與範例整理 - GT Wang
在目前的目錄中,找出所有的C 語言原始碼檔案( *.c ),透過 grep 搜尋這些程式碼,過濾出含有 main 這個單字的檔案,列出所有符合條件的檔案列表:
#80. CSH和BASH - 2022 - 软件
CSH 与BASH计算机需要操作系统才能运行多个程序。它们是识别计算机用户在键盘上键入的程序 ... 它使用的关键字和语法来自SH,它与原始Bourne shell不同,具有许多扩展。
#81. Shell的分类- C语言学习教程 - 黑马程序员教程
BSh, Bash Shell是Bourne Shell的一个免费版本,是最早的Unix Shell,包括许多附加的特点,是一个交换式的命令解释器和命令编程语言。 CSh, C Shell中使用“类C”语法, ...
#82. Unix shell比較
被bash淘汰;; csh -原始的C shell(1978年發布)。被tcsh和ksh淘汰;. 請注意,bash,ksh和zsh源自sh語法,而tcsh源自csh語法。這是兩種完全不同的語法。
#83. shell script 教學變數的宣告
前往shell script教學目錄變數的設定(完全相同於在bash命令列中直接設定的方法, ... (1) 在宣告變數或為變數賦值的時候,語法為:變數名稱=值。
#84. 4.5.3 TCSH Shell循环结构:while、foreach和repeat - 读书频道
《Linux完全参考手册第6版》第4章Shell脚本和编程,本章会讨论使用BASH和TCSH Shell ... 循环的循环体结尾处是关键字end。foreach循环的语法如下所示:.
#85. Shell Script @ 刀思無窮。劍思無盡。 一劍生天地一刀釋萬生
Shell script 是最基本的script 語言,它是一堆UNIX 指令的集合。本章將介紹Shell script 的基本功能及語法,期望讀者可以經由學習Shell scripts 讓使用UNIX 系統時 ...
#86. ksh和bash区别.sh 和.ksh —— 三种主要的Shell简介(Korn ...
[cc]和现在的开发语言一样,语法上有些差异! 三种主要的Shell 与其分身在大部份的UNIX系统,三种著名且广被支持的shell 是Bourne shell(AT&T shel.
#87. shell -計算機殼層 - 華人百科
較為通用的shell有標準的Bourne shell (sh)和C shell (csh)。 ... Korn開發了Korn shell。ksh結合了所有的C shell的互動式特性,並融入了Bourne shell的語法。
#88. Shell 脚本入门及语法速查
#!/bin/bash echo "hello world". 其中 #! 告诉系统其后路径所指定的程序是解释此脚本文件的Shell 程序,常见的Shell 程序有以下几类(可通过命令 cat ...
#89. Linux 的Shell 編程語法集錦 - 閱坊
寫好的文件保存爲*.sh 文件加好運行權限後,就是可以用Bash 運行的腳本程序了 ... 或expr 實現,或者使用(()),在內層小括號內,使用C 的語法實現。
#90. Linux 操作不求人系列- 貳章之貳- Shell Script 程式設計(II)
在上章,我們介紹很多bash shell指令的應用方式,並讓它們 ... 來當它們的資料處理語言,且tcsh 與bash僅僅差異的程式語法(syntax)不同,但概念與結構 ...
#91. shell指令碼變數動態賦值問題,shell指令碼怎樣把一個檔案的 ...
用美元符和小括號將命令括起來,如變數=$(命令)c shell:bill joy於20世紀80 ... 者更容易的使用互動式功能,並把algol風格的語法結構變成了c語言風格。
#92. Shell Script簡易教學 - 平凡的幸福
#!/bin/bash echo Hello World 第一行是必需的,它是用來定義你要使用的shell。Linux中有許多的Shell可以使用, 如:ksh、bash,但是彼此之間語法有所 ...
#93. Shell: sh,bash,csh,tcsh等shell的区别 - 360Doc
Shell 脚本有那些类型比如说.csh . py .sh 这些脚本又有什么区别 ... C Shell是一种比Bourne Shell更适合的变种Shell,它的语法与C语言很相似。
#94. 在C-Shell的.cshrc中添加函數 - 優文庫
我正在使用C-shell。有什麼辦法可以實現這個或任何工作來 ... C Shell不支持函數。 ... 中的.cshrc; 3. C-shell語法:在.cshrc中; 4. cshell中的一行中的字數count; 5.
#95. Shell: bash, tcsh, sh 的比較(不同) - KIMO.TW – 乖乖喵的藏經閣
bash : Linux 的使用者普遍使用的shell, 網路上找到的Linux script 或相關教程. 都是以bash 為範本. tcsh: 若你是個C 語言的開發者, tcsh 的語法較為接近C.
#96. 把csh,sh或ksh语法的脚本相互转换的程序- Shell - Linux教程网
shell - 把csh,sh或ksh语法的脚本相互转换的程序 ... 这是我找到的一个csh2ksh converter. 你可以用一下看. ... # This script will change a C-Shell script ...
#97. Linux sh,bash,csh,tcsh等shell的區別- 碼上快樂
查看用戶的shell類型是bash shell,而.cshrc是運行在C shell 下才會有效 ... C Shell是一種比Bourne Shell更適合的變種Shell,它的語法與C語言很相似。
#98. sh/bash/csh/Tcsh/ksh/pdksh等shell本質區別 - 开发者知识库
Shell 腳本的書寫在寫Shell腳本時,往往第一行要注明用什么解釋器來解釋 ... csh(全稱C Shell),是一種比Bourne Shell更適合的變種Shell,它的語法與C ...
#99. c Shell 運算式寫法 - 享樂生活生活想樂
C Shell 與Bourne Shell不相同的地方在於C Shell 沒有數字變數,但C Shell 卻有簡單的方法處理數字運算 @ var operator expression
#100. Dockerfile reference | Docker Documentation
RUN <command> (shell form, the command is run in a shell, which by default is /bin/sh -c on Linux or cmd /S /C on Windows); RUN ["executable", "param1", "param2 ...
c shell語法 在 [轉錄] UINX 的批次檔Shell Script -- YenYen 整理 的八卦
※ [本文轉錄自 herb 信箱]
作者: [email protected]
標題: ◇ UINX 的批次檔 Shell Script -- YenYen 整理
時間: Sun May 4 00:37:12 1997
台大計算機中心網路推廣協會
網路課程講義
課程名稱:UNIX的批次檔 ── Shell Script
上課日期:82年11月16日
講師:蔡孟光
───────────────────────────
<<<版權聲明>>>
本著作物版權屬於國立台灣大學電子計算機中心。為了推廣網路的使用,除了下列的限
制之外,任何人均可以任何型式複製或修改這份講義。
一、不得有任何的商業行為
二、複製或修改這份講義時,必須將本版權聲明列入,並註明之
三、國立台灣大學電子計算機中心不對修改過後的內容負任何的責任
───────────────────────────
<<<目錄>>>
□前言
□將文字檔設為可執行的Shell Script
□Script的基本結構及觀念
□Bourne Shell
一、變數
二、執行命令
三、流程控制
□C Shell
一、變數
二、執行命令
三、流程控制
□附錄A expr命令
□附錄B test命令
□前言
在DOS 中,你可能會從事一些例行的重覆性工作,此時你會將這些重覆性的命令寫
成批次檔,只要執行這個批次檔就等於執行這些命令。大家會問在UNIX中是否有批次處
理這個東東,答案是有的。在UNIX中不只有如DOS 的批次處理,它的功能比起DOS 更強
大,相對地也較複雜,已經和一般的高階語言不相上下。在UNIX中大家都不叫做批次檔
,而叫做Shell Script。
一般而言,Shell Script的地位和其它的可執行檔(或命令)是完全相同的,只不
過Shell Script是以文字檔的方式儲存,而非二進位檔。而執行Shell Script時,必須
有一個程式將其內容轉成一道道的命令執行,而這個程式其實就是Shell ,這也就是為
什麼我們叫做Shell Script的原因(往後我們稱為Script)。不同Shell 的Script基本
上會有一些差異,所以我們不能將寫給A shell 的Script用B shell 執行。而在UNIX中
大家最常使用Bourne Shell以及C Shell ,所以這堂課就介紹這兩種Script的寫法。
□將文字檔設為可執行的Shell Script
如果我們已經寫好Script,如何將其設成可執行檔呢?因為Script其實是一個可執
行檔,所以必須將其存取權設定成可執行。我們可以使用下列命令更改存取權:
chmod u+x filename 只有自己可以執行,其它人不能執行
chmod ug+x filename 只有自己以及同一群可以執行,其它人不能執行
chmod +x filename 所有人都可以執行
而我們如何指定使用那一個Shell 來解釋所寫的Script呢?幾種基本的指定方式如
下所述:
1. 如果Script的第一個非空白字元不是"#",則它會使用Bourne Shell。
2. 如果Script的第一個非空白字元是"#"時,但不以"#!"開頭時,則它會使用C Shell。
3. 如果Script以"#!"開頭,則"#!"後面所寫的就是所使用的Shell,而且要將整個路徑
名稱指出來。
名稱指出來。
這裡建議使用第三種方式指定Shell ,以確保所執行的就是所要的。Bourne Shell的路
徑名稱為/bin/sh ,而C Shell 則為/bin/csh。
<eg>
1. 使用Bourne Shell
┌──────────┐ ┌──────────┐
│echo enter filename │ │#!/bin/sh │
│ . │ or │ . │
│ . │ │ . │
│ . │ │ . │
└──────────┘ └──────────┘
2. 使用C Shell
┌──────────┐ ┌──────────┐
│# C Shell Script │ │#!/bin/csh │
│ . │ │ . │
│ . │ │ . │
│ . │ │ . │
└──────────┘ └──────────┘
3. 使用/etc/perl
┌──────────┐
│#! /etc/perl │
│ . │
│ . │
│ . │
└──────────┘
除了在Script內指定所使用的Shell 外,你也可以在命令列中強制指定。比如你要
用C Shell 執行某個Script,你可以下這個命令:
csh filename
此時的Script的存取權就不一定要為可執行檔,其內部所指定的Shell 也會無效,詳細
的情形後面會討論。
□Script的基本結構及觀念
Script是以行為單位,我們所寫的Script會被分解成一行一行來執行。而每一行可
以是命令、註解、或是流程控制指令等。如果某一行尚未完成,可以在行末加上"\" ,
這個時候下一行的內容就會接到這一行的後面,成為同一行,如下
┌───────────┐
│echo The message is \ │
│too long so we have \ │
│to split it into \ │
│several lines │
└───────────┘
當Script中出現"#" 時,再它後面的同一行文字即為註解,Shell 不會對其翻譯。
在Script中要執行一個命令的方法和在命令列中一樣,你可以前景或背景執行,執
行命令時也會需要設定一些環境變數。
Script的流程控制和一般高階語言的流程控制沒有什麼兩樣,也和高階語言一樣有
副程式。這些使得Script的功能更加強大。
為了達到與高階語言相同的效果,我們也可以在Script中設定變數,如此使Script
成為一個名付其實的高階語言。
□Bourne Shell
一、變數
Bourne Shell的變數型態只有字串變數,所以要使用數值運算則必須靠外部命令達
成目的。而其變數種類有下列幾種:
1. 使用者變數
這是最常使用的變數,我們可以任何不包含空白字元的字串來當做變數名稱。
設定變數值時則用下列方式:
var=string
取用變數時則在變數名稱前加上一"$" 號。
<eg>
┌───────┐
│name=Tom │
│echo name │
│echo $name │
└───────┘
結果如下:
name
Tom
2. 系統變數(環境變數)
和使用者變數相似,只不過此種變數會將其值傳給其所執行的命令。要將一使
用者變數設定為系統變數,只要加上:
export var
<eg>
┌───────┐
│name=Tom │
│export name │
└───────┘
以下是使用者一進入系統之後就已設定好的系統變數:
$HOME 使用者自己的目錄
$PATH 執行命令時所搜尋的目錄
$TZ 時區
$MAILCHECK 每隔多少秒檢查是否有新的信件
$PS1 在命令列時的提示號
$PS2 當命令尚未打完時,Shell 要求再輸入時的提示號
$MANPATH man 指令的搜尋路徑
3. 唯讀的使用者變數
和使用者變數相似,只不過這些變數不能被改變。要將使用者變數設成唯讀的
,只要加上:
readonly var
而若只打readonly則會列出所有唯讀的變數。還有一點,系統變數不可以設定
成唯讀的。
<eg>
┌───────┐
│name=Tom │
│readonly name │
│echo $name │
│name=John │
│readonly │
└───────┘
結果如下:
Tom
name: is read only
readonly name
readonly ......
4. 特殊變數
有些變數是一開始執行Script時就會設定,並且不以加以修改,但我們不叫它
唯讀的系統變數,而叫它特殊變數(有些書會叫它唯讀的系統變數),因為這
些變數是一執行程式時就有了,況且使用者無法將一般的系統變數設定成唯讀
的。以下是一些等殊變數:
$0 這個程式的執行名字
$n 這個程式的第n個參數值,n=1..9
$* 這個程式的所有參數
$# 這個程式的參數個數
$$ 這個程式的PID
$! 執行上一個背景指令的PID
$? 執行上一個指令的返回值
當你執行這個程式時的參數數目超過9 個時,我們可以使用shift 命令將參數
往前移一格,如此即可使用第10個以後的參數。除此之外,吾人可以用set 命
令改變$n及$*,方法如下:
set string
如此$*的值即為string,而分解後則會放入$n。如果set 命令後面沒有參數,
則會列出所有已經設定的變數以及其值。
<eg>
檔名:ex1 參數:this is a test
┌───────────┐
│echo Filename: $0 │
│echo Arguments: $* │
│echo No. of args.: $# │
│echo 2nd arg.: $2 │
│shift │
│echo No. of args.: $# │
│echo 2nd arg.: $2 │
│set hello, everyone │
│echo Arguments: $* │
│echo 2nd arg.: $2 │
└───────────┘
結果如下:
Filename: ex1
Arguments: this is a test
No. of args.: 4
2nd arg.: is
No. of args.: 3
2nd arg.: a
Arguments: hello, everyone
2nd arg.: everyone
值得一提的是,當你想從鍵盤輸入一變數值時,你可以使用下面的命令:
read var1 var2.....
這時read會將一個字分給一個變數。如果輸入的字比變數還多,最後一個變數會將
剩下的字當成其值。如果輸入的字比變數還少,則後面的變數會設成空字串。
如果需要處理數值運算,我們可以使用expr命令。其參數及輸出列於附錄A。
二、執行命令
在Bourne Shell中有五種方法執行一個命令,而這五種方式所產生的果有些許的不
同。
1. 直接下命令
這個方式和在命令列中直接下命令的效果一樣。
2. 使用sh命令
sh command
這個檔案必須是Bourne Shell的Script,但這個檔案並不一定要設成可執行。
除此之外和直接下命令的方式一樣。
3. 使用"."命令
. command
這時和使用sh命令相似,只不過它不像sh一般會產生新的process ,相反地,
它會在原有的process 下完成工作。
4. 使用exec命令
exec command
此時這個Script將會被所執行的命令所取代。當這個命令執行完畢之後,這個
Script也會隨之結束。
5. 使用命令替換
這是一個相當有用的方法。如果想要使某個命令的輸出成為另一個命令的參數
時,就一定要使用這個方法。我們將命令列於兩個"`" 號之間,而Shell 會以
這個命令執行後的輸出結果代替這個命令以及兩個"`" 符號。
<eg>
str='Current directory is '`pwd`
echo $str
結果如下:
Current directory is /users/cc/mgtsai
這個意思是pwd 這個命令輸出"/users/cc/mgtsai",而後整個字串代替原
來的`pwd` 設定str 變數,所以str 變數的內容則會有pwd 命令的輸出。
<eg>
number=`expr $number + 1`
這就是先前所提要作數值運算的方法,基本上expr命令只將運算式解,而
後輸出到標準輸出上。如果要將某變數設定成其值,非得靠命令替換的方
式不可。這個例子是將number變數的值加1 後再存回number變數。
三、流程控制
在介紹流程控制之前,我們先來看看test命令。test命令的參數是條件判斷式,當
條件為真時則傳回非零值,而條件為偽時則傳回零。在所有的流程控制都必須用到
test命令來判斷真偽。而test命令的使用方法則列於附錄B。
<eg>
test $# = 0
如果執行這個程式沒有參數時,會傳回非零值代表"$# = 0"這個條件成立。反
之則會傳回零。
以下介紹各種流程控制:
1. if then
語法以及流程圖如下
語法以及流程圖如下
│ FALSE
if (condition) <condition>─┐
then │TRUE │
then-commands then-commands │
fi ├────┘
│
condition 是一個test命令。往後所介紹的各種流程中的condition 都是test
命令。
<eg>
檔名:chkarg
┌───────────┐
│if (test $# != 0) │
│ then │
│ echo Arg1: $1 │
│fi │
└───────────┘
$ chkarg Hello
Arg1: Hello
$ chkarg
$
2. if then else
語法以及流程圖如下
│ FALSE
if (condition) <condition>─────┐
then │TRUE │
then-commands then-commands else-commands
else ├────────┘
else-commands │
fi
3. if then elif
語法以及流程圖如下
│ FALSE
if (condition1) <condition1>─┐
then │TRUE │ FALSE
commands1 commands1 <condition2>─┐
elif (condition2) │ │TRUE │
then │ commands2 commands3
commands2 ├─────┴────┘
else │
commands3
commands3
fi
<eg>
echo 'word 1: \c'
read word1
echo 'word 2: \c'
read word2
echo 'word 3: \c'
read word3
if (test "$word1" = "$word2" -a "$word2" = "$word3")
then
echo 'Match: words 1, 2, & 3'
elif (test "$word1" = "$word2")
then
echo 'Match: words 1 & 2'
elif (test "$word1" = "$word3")
then
echo 'Match: words 1 & 3'
elif (test "$word2" = "$word3")
then
echo 'Match: words 2 & 3'
else
echo 'No match'
fi
4. for in
語法以及流程圖如下
│ FALSE
for var in arg-list ┌─<arg-list還有東西嗎?>─┐
do │ │TRUE │
commands │ 從arg-list取得一項 │
done │ 放到變數var │
│ │ │
│ commands │
<eg> └──────┘ │
┌───────────┐ ┌───────┘
│for a in xx yy zz │ │
│ do │
│ echo $a │
│done │
└───────────┘
結果如下:
xx
yy
yy
zz
5. for
語法以及流程圖如下
│ FALSE
for var ┌─<參數中還有東西嗎?>─┐
do │ │TRUE │
commands │ 從參數中取得一項 │
done │ 放到變數var │
│ │ │
│ commands │
<eg> └─────┘ │
檔名:lstarg ┌───────┘
┌───────────┐ │
│for a │
│ do │
│ echo $a │
│done │
└───────────┘
$lstarg xx yy zz
xx
yy
yy
zz
6. while
語法以及流程圖如下
│ FALSE
while (condition) ┌─<condition>─┐
do │ │TRUE │
commands │ commands │
done └────┘ │
┌────┘
│
<eg>
┌───────────────┐
│number=0 │
│while (test $number -lt 10) │
│ do │
│ echo "$number\c" │
│ number=`expr $number + 1` │
│done │
│echo │
└───────────────┘
結果如下:
0123456789
7. until
語法以及流程圖如下
│ TRUE
until (condition) ┌─<condition>─┐
do │ │FALSE │
commands │ commands │
done └────┘ │
┌────┘
│
它和while 的不同只在於while 是在條件為真時執行迴圈,而until 是在條件
為假時執行迴圈。
8. break及continue
這兩者是用於for, while, until 等迴圈控制下。break 會跳至done後方執行
,而continue會跳至done執行,繼續執行迴圈。
9. case
語法以及流程圖如下
│ TRUE
case str in <str=pat1>────commands1─┐
pat1) commands1;; │FALSE TRUE │
pat2) commands2;; <str=pat2>────commands2─┤
pat3) commands3;; │FALSE TRUE │
esac <str=pat3>────commands3─┤
│FALSE │
├────────────┘
│
而pat 除了可以指定一些確定的字串,也可以指定字串的集合,如下
* 任意字串
? 任意字元
[abc] a, b, 或c三字元其中之一
[a-n] 從a到n的任一字元
| 多重選擇
<eg>
┌───────────────┐
│echo 'Enter A, B, or C: \c' │
│read letter │
│case $letter in │
│ A|a) echo 'You entered A.';;│
│ B|b) echo 'You entered B.';;│
│ C|c) echo 'You entered C.';;│
│ *) echo 'Not A, B, or C';; │
│esac │
└───────────────┘
10. 函數
格式如下
function-name()
{
commands
}
而要呼叫此函數,就像在命令列下直接下命令一般。
□C Shell
C Shell 有些特性和Bourne Shell一樣,但有些不相同。這裡介紹與Bourne Shell
不相同的地方。
一、變數
1. 字串變數
這個部分和Bourne Shell的變數一樣,只不過在設定變數值時不能使用Bourne
Shell的方式,而必須打:
set var=value
2. 數字運算
基本上C Shell 沒有數字變數,但C Shell 卻有簡單的方法處理數字運算:
@ var operator expression
operator可以是C 語言中的=, +=, -=,......,而expression則是運算式。運
算式的運算子如下:
A. () 改變計算的順序
~@
B. ~ 位元NOT運算
@~~
! 邏輯否定
C. % 取餘數
C. % 取餘數
/ 除
* 乘
- 減
+ 加
D. >> 右移
<< 左移
E. > 大於
< 小於
>= 大於等於
<= 小於等於
!= 不等於
== 等於
F. & 位元AND運算
^ 位元XOR運算
| 位元OR 運算
G. && 邏輯AND
|| 邏輯OR
除此之外,我們也可以檢驗一個檔案的狀態,如下
-n filename
而-n可為下列之一
-d 檔案是一個目錄檔案
-e 檔案存在
-f 檔案為一般的檔案
-o 使用者擁有這個檔案
-r 使用者可以讀取這個檔案
-w 使用者可以寫入這個檔案
-x 使用者可以執行這個檔案
-z 檔案長度為0
<eg>
@ 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) simple-command
2. goto
語法如下
goto label
這時程式會跳至以l"label:"開頭的那一行執行
<eg>
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
end
5. while
這和Bourne Shell的while相似。語法如下
while (expression)
commands
end
6. 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 解釋成其它意義。
<eg> 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 檔案為非空的一般檔
<eg> test -r "$filename" -a -s "$filename"
--
☆ [Origin: ◎椰林風情◎] [From: woju.g1.ntu.edu.tw ] [Login: **] [Post: **]
--
┼──┼ ┼──┼
│ │ ╭───╮
│ │ ├───┤
├──┤ ╰─┬─╯ B85504047
╰──╯ ─┼─ 台大化工一A 江明洋
--
※ 發信站: 批踢踢實業坊(bbs.m8.ntu.edu.tw)
◆ From: 140.112.8.10
... <看更多>