• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > Csh的基本语法介绍

Csh的基本语法介绍

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了csh语法,csh,csh edu,csh文件,csh是什么格式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在*unix系统中,常用的shell有sh,bash,csh/tcsh, ksh.

sh来自于systemV的Unix,是传统的Unix的shell,直到现在很多的系统管理员仍然喜欢使用sh。
bash来自于BSD Unix,语法非常类似于C语言,所以通常有C/C++编程背景的开发人员最喜欢使用。
ksh是对sh的扩展,且吸收了csh的一些有用的功能,但是由于开始ksh的license是AT&T,所以后来出现了很多的ksh的开源版本,例如mksh,pdksh等。
bash是现在很多Linux的发行版中默认的shell,综合了其他shell的很多优点。

下面描述csh的一些基本的语法(在sh环境中执行csh切换到csh环境):

1) 变量

通过set来定义局部变量x,通过$x或${x}来使用变量x的值,$%x表示变量的值的长度, $?x来判断变量x是否设置,如设置则为1,否则为0。

set x = 5
echo $x
echo ${x}kg
echo $%x  
</div>

全局变量的定义setenv v  value 该变量将被此shell派生的所有子shell继承。

$$表示当前进程的PID, $status 或 $? 表示退出状态。

2)数组

定义数组myarr, 通过$myarr[index]来访问数组中的值,注意index是从1开始的。通过$myarr或$myarr[*]来访问数组所有的元素。通过$#myarr来查看元素的个数。

set myarr = (str1, str2,str3)
echo $myarr[2]
echo $myarr
echo $myarr[*]
</div>

3)命令替换

通过set x = `cmd`来执行命令,且结果赋值给变量。
set d = `date`
echo $d
echo $d[6]-$d[2]-$d[3]
</div>

4)命令行参数

通过$argv[1],$argv[2]或$1,$2来访问命令行参数。命令行参数的个数为$#argv。

5)文件名扩展的元字符

只能使用?,*,[abc],[a-c]。

6)IO重定向和管道

将命令的输出重定向到文件为>。
将命令的输出重定向并追加到文件为>>。
将命令的输入重定向到文件为<。
将命令的报错信息重定向到一个文件(cmd>/dev/tty)>&errors。
将命令的输出和错误输出分别重定向(cmd > goodstuff)  >& badstuff。

将命令的输出和报错信息重定向到一个文件cmd>&file。
将命令的输出经管道发往另一个命令cmd|cmd.
将命令的输出和报错信息经管道发往另一个命令cmd|&cmd。
条件语句为 cmd && cmd 或 cmd || cmd。
command<<WORD 表示将command的输入重定向为从第一个WORD处开始,到下一个WORD处之间的内容(即here文档)。

7)从键盘读取并保存到变量中

set var = $<
</div>

8)算术

@ var = 5 + 5
echo $var
@ v2 = $var + 3
echo $v2
</div>

9)代字符号扩展

~username 表示username的home目录。

10)别名

alias m more 为more创建别名m。
alias 列出所有的alias。
unalias m 用来删除more的alias定义。

11)初始化文件

.login 在登录时执行的文件。
.cshrc 在每次调用shell时都执行的文件。

12) label 和 goto

csh中没有函数的概念,使用类似windows批处理中的label和goto。
goto label
......
label:
....
</div>

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
</div>

14 while/foreach

while(expression)
  commands
  continue

  break

end
foreach var (wordlist)
  commands
end
</div>

15、repeat

repeat表示重复执行后面的命令。

repeat 3 "echo helloworld"
</div>

16、csh中设置环境变量PATH的方法

csh中使用path代替PATH,设置类似于数组的使用。
set path = ($path /home)
echo $path
echo $PATH
</div>

17、source等价于其他shell中的.

source使得程序在当前的shell中被执行,而不是派生子进程来执行。

18、转义字符与单双引号

引号必须成对出现,而且必须在同一行上配对。可以用反斜杠来转义换行符,这样就能在下一行配对了。
单引号可用于保护双引号,双引号也可以用来保护单引号。
单引号保护除历史字符(!)之外的所有元字符不被解释。
双引号保护除历史字符(!),变量替换字符($)和反引号(用于命令替换)之外的所有元字符,使其不被解释。

19、历史command

history用来查看command执行的历史。
!!用来执行上一条命令。

20、pushd和popd用来维护目录栈

21、csh -vx用来显示输入的原样和变量替换后的脚本,用来帮助调试。

22、在脚本中处理中断

onintr finish
  <script continues here>
 
finish:
onintr - # Disable further interrupts
echo Cleaning temp files
exit 1
</div>

onintr 命令后跟一个标号名,finish是用户自定义的标号。如果发生中断,控制将被转移到finish标号。通常该行位于脚本的开头。除非当程序正在执行时按ctrl+C(中断键),此时控制将被转移到该标号。onintr - 表示屏蔽所有的中断,此时按下ctrl+

您可能想查找下面的文章:

  • Csh的基本语法介绍
  • csh脚本语法实例

相关文章

  • Linux tcpdump命令详解大全
  • linux shell实现求一个多维数组中的最大和最小值
  • shell实现自动adsl拨号并检测连接状况脚本分享
  • Shell脚本中的位置变量参数(特殊字符)实例讲解
  • linux中Jetty的安装和配置方法
  • Shell脚本实现C语言代码行数统计
  • linux下防火墙开启某个端口号及防火墙常用命令使用(详解)
  • Hadoop单机版和全分布式(集群)安装
  • Linux命令行里的“瑞士军刀”
  • 分享一个入门级可控多线程shell脚本代码

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • bash脚本输入密码不回显问题的解决方法
    • Shell脚本实现检测某ip网络畅通情况(含短信报警功能)
    • shell脚本连接并重启远程服务器的方法
    • 一个监控LINUX目录和文件变化的Shell脚本分享
    • 大小写字母转换的shell脚本代码
    • Linux系统中bash shell编程的10个基础问题讲解
    • linux shell脚本学习xargs命令使用详解
    • Bash Shell中忽略大小写的设置方法
    • Linux监控cpu以及内存使用情况之top命令(详解)
    • Shell中使用scp命令实现文件上传代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有