[CSHELL]csh基本语法
(2022-03-30 18:38:11)
标签:
it电脑技术 |
分类: 系统运维 |
在*unix系统中,常用的shell有sh,bash,csh/tcsh, ksh;
sh
来自于systemV的Unix,是传统的Unix的shell,直到现在很多的系统管理员仍然喜欢使用sh。
csh 来自于BSD
Unix,语法非常类似于C语言,所以通常有C/C++编程背景的开发人员最喜欢使用。
ksh
是对sh的扩展,并吸收了csh的一些功能,后来有很多 ksh 的开源版本,例如mksh,pdksh等。
bash
是现在很多Linux的发行版中默认的shell,综合了其他shell的很多优点。
下面描述csh的一些基本的语法(在sh环境中执行csh切换到csh环境):
01) 变量
set x = 5
#定义变量并赋值
echo $x
#引用变量
echo ${x}kg
#引用变量
echo $%x
#变量值的长度
echo $?x
#判断变量x是否设置,如设置则为1,否则为0
setenv v value #全局变量,能被此shell派生的所有子shell继承
$$
#表示当前进程的PID
$home
#和Bourne Shell的$HOME相同
$path
#和Bourne Shell的$PATH相似,只不过这是一个阵列
$prompt
#和Bourne Shell的$PS1相同
$shell
#Shell的路径名称
$status
#和Bourne Shell的$?相同,命令执行后的返回值
csh无变量裁剪功能,可借助cut、sed、awk等实现
02)数组(或称阵列)
set myarr = (str1,str2,str3)
#定义数组
echo $myarr[2]
#访问数组中的值,index从1开始
echo $myarr
#访问数组所有元素
echo $myarr[*]
#访问数组所有元素
echo $#myarr
#查看元素的个数
03)命令替换
set d = `date`
#执行命令,将结果赋值给变量
echo $d
echo $d[6]-$d[2]-$d[3]
04)命令行参数
$argv[1], $argv[2] #访问命令行参数,不受个数限制
$1, $2
#访问命令行参数
$#argv
#与bash中的 $#相同,命令行参数的个数
$argv
#与bash中的 $*相似,只不过这是一个阵列。
shift
#参数左移
05)文件名扩展的元字符
只能使用?, *, [abc], [a-c]
06)IO重定向和管道
> #将命令的输出重定向到文件
>> #将命令的输出重定向并追加到文件
< #将命令的输入重定向到文件
(cmd>/dev/tty)>&errors
#将命令的报错信息重定向到一个文件
(cmd > goodstuff) >&
badstuff #将命令的输出和错误输出分别重定向
cmd>&file
#将命令的输出和报错信息重定向到一个文件
cmd|cmd
#将命令的输出经管道发往另一个命令
cmd|&cmd
#将命令的输出和报错信息经管道发往另一个命令
cmd && cmd
下面描述csh的一些基本的语法(在sh环境中执行csh切换到csh环境):
01) 变量
set x = 5
echo $x
echo ${x}kg
echo $%x
echo $?x
setenv v value
$$
$home
$path
$prompt
$shell
$status
csh无变量裁剪功能,可借助cut、sed、awk等实现
02)数组(或称阵列)
set myarr = (str1,str2,str3)
echo $myarr[2]
echo $myarr
echo $myarr[*]
echo $#myarr
03)命令替换
set d = `date`
echo $d
echo $d[6]-$d[2]-$d[3]
04)命令行参数
$argv[1], $argv[2]
$1, $2
$#argv
$argv
shift
05)文件名扩展的元字符
只能使用?, *, [abc], [a-c]
06)IO重定向和管道
>
>>
<
(cmd>/dev/tty)>&errors
(cmd > goodstuff)
cmd>&file
cmd|cmd
cmd|&cmd
cmd && cmd