本站内容有下面分类知识,欢迎您的到来^_^

shell相关:指令篇 基础篇 脚本欣赏 编程实例 shell问问 shell视频教程 技巧篇 水平测试 E文资料 vi编辑器 高级Bash脚本编程指南
其他:mysql perl c语言

设soyo123为首页 收藏本站
当前位置:|主页>shell基础篇>

3.TCSH内建命令1--TCSH shell 编程入门

百度收藏 QQ搜藏

1、数字变量@


在TCSH中,用@命令代替set命令来声明数字变量,然后进行算术,关系和位操作,数字和字符串变量是两个不同的对象,需要用不同的方法管理,不能把set用于数值变量的设置@命令由关键词,变量名,赋值运算符和表达式构成。如:


%@ num=10 #注意空格
%@ sum=2 * ($num + 3)
%echo $sum
%26


2、alias


格式:alias [name[command]]

关键词


alias 别名name 引用的命令command

如:


alias list ls
alias list 'ls -l'


3、argv


当脚本被执行时,命令行中的单词被分析并放入argv数组中。argv[0],argv[1]...argv[n],其中argv[0]保存命令名,argv[1]保存命令的第一个参数,argv[n]命令的第n个参数。argv数组元素可缩写元素号码,前面加$。

如:$argv[1]写为$1;$argv[*]写为$*。#argv参数标识符包含输入在命令行中的参数号码,可检查$#argv变量。如:


arglist
#
echo "The number of arguments entered is $#argv"
echo "The list of arguments is : $argv[*]"

%tcsh arglist a b c
The number of arguments entered is 3
The list of arguments is : a b c


argv变量列表:


命令行参数 说明

$argv[0]或$0 命令名
$argv[n]或$n 从1($1-$)开始的第n个命令行参数
$argv[*]或$* 从1开始的所有命令行参数
$#argv或$# 命令行参数的计数


4、bg


格式:bg [%job]

bg命令把指定的任务放入后台。如果此任务已经停止,则继续执行,如果没有参数,将当前任务放入后台。(详细用法与BASH相同此处略)

5、break


格式:


break

break命令用于退出最接近的foreach/while循环过程,执行同一行中其他的命令。

6、breaksw


格式:breaksw

可以从switch语句处中断,在endsw后继续执行。

7、builtins


列出全部shell的内建命令表.


8、cd


格式:cd [-p][-l][-nl -v][name]

如果给出目录名,此命令把name设置为当前目录,如果命令中没有name,当前目录自动设置成用户主目录。用于name的"-"引用上一级目录,如果参数name没有给出子目录,或不是全路径,或使用./或../引用当前目录及父目录,那么就检查在cdpath shell变量中列出的目录来寻找该目录名。如果此操作失败,将检查shell变量中是否保存着的目录路径名。

用-p选项,linux显示目录列表, 用-l,-n,-v选项与用在dirs命令中的选项完全相同。

默认选项-p ;

9、continue


此命令继续执行最靠近while/foreach语句,当前行其余的命令被执行。


10、dirs


格式:dirs [-l][-n|-v]


dirs -S|-L [filename]
dir -c

如果不带参数,dirs将显示目录列表,列表开头被列在作侧,第一个目录是当前目录。带-l选项,用户主目录中的全部子目录被展开。输入项在到达屏幕边缘时,-n选项隐藏输入项,-v选项显示每一行的输入项入口,-c选项将清除目录列表,-S选项可以把目录列表作为一系列的cd和pushed命令保存在文件中,-L选项可以从指定的文件中将cd和pushed命令读入,该文件包含-S选项所存储的cd和pushed命令。如果没有指定的文件名,将使用赋值到dirsfile shell变量中的文件名。如果没有设置dirsfile,将使用~/.cshdirs,在启动时注册shell将对dirs -L求值,如果设置了savedirs,退出前使用dirs -S,由于在~/.cshdirs之前,仅仅~/.tcshrc是正常来源,dirsfile应该以~/.tcshrc设置而不是以~/.login设置.


11、echo


格式:


echo [-n] word/string

此命令把每个单词或字符串写入shell的标准输出.可设置echostyle shell变量来仿真选项以及BSD的换码序列或者echo的System V 版本;


12、eval


格式:


eval argument...

此命令把参数作为shell的输入,执行当前shell的上下文中的结果命令,由于分析发声在替换前,所以该命令通常用于执行命令或变量替代所产生的命令。


13、exec


格式:exec command

此命令代替当前的shell执行指定的命令,并退出终端;


14、exit


格式: exit [expression]

shell可以带指定的表达式的值退出,如果没有包含表达式,也可带状态变量值退出。

15、fg


格式:fg [%job...]

把指定的任务带到前台,如果任务在终止状态,在带到前台的同时使他运行;job参数是使用任务号或者下列字符串之一的任务引用:' % + -

16、foreach


格式:


foreach variable(list of values)
commands
end

foreach结构被设置为顺序引用数值列表,它类似BASH shell的for in 结构.foreach结构产生两个操作数:一个变量和一组包含在()中的数值列表.将列表中的值赋值到结构中的变量中.循环体的结尾由语句end构成.下例中脚本list输出由项目和foreach循环读取每一项当前的日期构成的一行信息,列表中的每一项被连续赋值到变量object list


#
set tdate=`date +%D`
foreach object(milk cookies apples cheese)
echo $object $tdate
end
%tcsh list
milk 04/26/03
cookies 04/26/03
apples 04/26/03
cheese 04/26/03

使用foreach循环有助于管理文件,可以模式中的shell特定字符来产生用作数值列表的文件名列表,然后所产生的文件名列表就成为foreach结构引用的列表.如果在列表中不带任何变量,可以使用命令行参数实现循环.


list
#set tdate=`date +D%`
foreach object($argv[*])
echo "$object $tdate"
end
%tcsh list a b c
a 04/26/03
b 04/26/03
c 04/26/03

使用argv[*]特殊参数变量,可以直接引用命令行参数。下例中,当调用shell脚本cbackuparg时,在命令行下输入C程序文件的列表,在foreach循环中,argv[*]引用命令行中的所有参数,将按顺序把各个参数赋值给变量backfile,变量argnum用于引用每个参数。显示参数和backfile的值来说明它们两个是相同的。


cbackuparg
#
@ argnum=1
foreach backfile ($argv[*])
    cp $backfile sourcebak/$backfile
    echo "$backfile $argv[$argnum]"
    @ argnum=$argnum+1
end


%cbackuparg main.c lib.c io.c
main.c main.c
lib.c lib.c
io.c io.c


上一篇:2.TCSH控制结构/测试表达式--TCSH shell 编程入门 下一篇:4.TCSH内建命令2--TCSH shell 编程入门
power by soyo123 2007-2008