使用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
17,history 格式: history [-hr][n] history -S|-L|M [filename] history -c 如果history没有任何参数,将显示开行号的历史命令列表.用作参数的号码将列出 行的最后号码.如果没有任何选项参数,她将用作历史文件名;否则,将使用hisfile 变量值. 用-h选项,将以注释的形式显示不带行号的历史文件列表 用-r选项,将反向显示,以最近的列表开始 用-c选项,则清除历史列表 如果用-S选项,可以把历史列表存入文件,如果savehist shell变量的第一个单词 被设置为数值,历史文件将被保存为最大的行数,如果第二单词为'merge',历史列表 将被合并到当前的历史文件中,而不替代历史列表,时间图章排序历史列表. 如果用-L选项,shell将从存储的历史列表文件中读取历史列表并把她追加到当前 历史列表中. 如果用-M选项,将从历史文件读取历史列表信息,但用当前历史列表信息合并,排序 历史列表. 如果没有用这些选项给出文件名,那么,就使用赋值到histfile shell变量的文件 名,如果没有设置histfile,就使用~/.history.
18,hup 格式: hup [command] 如果带有括起来的command参数,hup运行command,根据停机信号退出.当shell退出时, hup安排shell发出停机信号.注意:命令也许设置自己的停机响应,重写hup,如果没有 参数(只有在shell脚本中才允许),hup使shell根据脚本的余项的停机信号退出.
19,if-then 格式: if (expression) then command endif if-then结构把条件放入几个linux命令,该条件是expression,如果expression得出 非零的数值,那么expression为真,执行if结构内的命令,如果expression得出零值 那么expression为假,就不执行if结构内的命令. if-then结构以if关键词开始,expression表达式用()括起来,关键词then后可以跟 任意数量的linux命令,以关键词endif结束if命令.注意:在TCSH中,if (expressiong) 和then必须在同一行! 举例:
代码:
ifls
#
echo -n "Please enter option:"
set option=$<
if ($option=="s") then
echo List files by size
ls -s
endif | %tcsh ifls Please enter option: S List files by size total 2 1 monday 2 today %
20,if-then-else 格式: if (expressiong) then command else command endif 用户需要经常需要根据expression是真还是假来进行选择.关键词else允许if结构 在两者之间选择,如果expression为真,那么执行第一个command,否则,执行第二个 就是else后面的command. 举例:
代码:
elsels
#
echo Enter s to list file sizes
echo otherwise all file information is listed
echo -n "please enter option:"
set option=$<
if ($option=="s") then
ls -s
else
ls -l
endif
echo Good-bey | (结果略)
21,jobs 格式: jobs [-l] 此命令列出所有活动的任务,如果带-l选项,将列出进程号,以及正常的信息.
22,kill 格式: kill [-signal] %job\pid... kill -l 此命令用于终止进程或者任务,如果带-signal选项,应该指定要发送的信号,默认发送 的信号是SIGTERM,如果带有-l选项,则列出信号名,对于带-l选项提供的信号数,将 列出与其相关的信号名.
23,logout 此命令用于终止注册shell,如果设置了ignoreeof,它将非常有用.
24,nice 格式: nice [+ number][command] 此命令设置shell调整优先为number,如果没有设置number,调整优先设置为4,带有 指定的command,nice适当的优先运行command,number值越大,进程获得的CPU的时间 就越少.
25,nohup 格式: nohup [command] 如果不带command参数,nohup指示shell忽略任何停机信号,如果带command参数,将 执行此命令并忽略执行中的任何停机信号.
26,notify 格式:notify [%job...] Linux执行命令后,如果有后台任务在执行,系统将通知到目前为止已经完成的后台 任务,该系统不会中断如编辑这样的操作来通知用户关于完成的任务,当某任务完成 时,如果想马上知道,无论系统在作什么,可以使用notify命令指令系统通知用户,它的 参数作为任务号,当任务完成时,系统将中断当前命令并通知用户任务已经完成,如: %notify %2 当2号任务完成时,告诉系统通知用户.
27,onintr 格式 onintr [-|label] 此命令控制shell在中断时的动作,不带任何参数,将回复shell中断默认的动作,将 终止shell脚本或返回输入级的终止符,如果带-参数,则忽略全部的中断,当接受中断 或当子进程终止时,带label的命令将使shell执行goto标号.
28.popd 格式 popd [-p][-l][-n|-v][+n] 此命令从目录列表中删除一个目录,不带参数的命令从列表中删除顶层目录,+n删除 从左起的第n层的目录.然后popd显示最终的目录列表.pushdsilent shell变量可以 设置为支持此特性,-p选项可以重写pushdsilent.
29.printenv 格式: printenv [name] 此命令显示环境变量的名和值,如果带name参数,仅仅显示环境变量name的值.
30.pushd 格式: pushd [-p][-l][-n|-v][name|+n] 此命令把目录添加到存储的目录列表中,然后显示目录列表,如不带参数,除非目录 为空,pushd交换顶层的两个目录,并返回0. +n旋转列表以便使第n个目录(从左起)列与顶端,但是,如果设置了dextract,pushd +n 将展开第n个目录,把它压入堆栈顶层. -n旋转堆栈以便第n个目录(从右起)列于顶端,dir把dir添加到顶端的目录列表,是她 成为新的当前目录.如果设置了pushtohome,不带参数的pushd命令执行pushd ~的 功能,像cd的功能一样,如果dunique被设置,pushd在压入堆栈之前从堆栈中删除任何 的name历程,可以设置pushdsilent shell变量来取消目录列表的显示,然后可以使用 -p选项重写pushdsilent.
31,repeat 格式: repeat count command 此命令重复执行command指定的次数count.
32,set 格式: set set name ... set name = value ... set name = (wordlist)... set name[index] = word ... set -r set -r name ... set -r name = value ... set -r name = (wordlist) ... 不带任何参数的set命令将显示全部的shell变量值,包含许多单词的变量作为放在 括号中的词列出,带name参数的set命令定义一个变量并为它赋值null串,带有name 和=符号分隔的值,set定义变量并给它赋值,要把wordlist作为值赋值给name变量, 把列表中的词作为要赋的值放在括号中,为了将数值赋值给数组元素,,使用方括号 []指定元素的index,但是该元素必须已经存在. -r选项常用于引用只读变量,仅仅带-r选项的set命令将列出只读变量,与变量名一起 使用,set将使此变量设置为只读,与赋值的变量一起使用,将初始化该变量,并使该 变量成为不能被修改的只读变量. 在TCSH中,用户必须在使用变量之前首先声明它,使用加变量名的set命令声明变量. 变量名可以是任何字母字符包括下划线_,也可以含有数字,但是变量名不能以数字为 首字符!
33,setenv 格式: setenv [name[value]] setenv常用于定义有特定值的环境变量.如没有带value选项,setenv设置name变量 为null串,如果没有带任何参数,将显示全部环境变量的名称和值. TCSH有两种类型的变量:局部变量和环境变量.局域变量是在shell内部声明的;环境 变量是全局域的变量.使用setenv可以定义环境变量,使用setenv命令,变量名,以及 被赋值的值,就可给环境变量赋值.其中,没有赋值运算符,如: %setenv greeting hello greeting环境变量被赋值为hello 无论何时调用shell脚本,都将产生自己的shell,如果shell脚本被另外一个shell脚本 执行,它将使自己的shell从第一脚本的shell中分离.现在有两个shell,属于第一个 脚本的父shell和当执行第二个脚本是产生的子shell.在其他的shell内部执行脚本 时,这个shell是第一个脚本的子shell,原来的脚本的shell是它的父shell. 每个shell都拥有自己的变量,子shell不能引用父shell中的局域变量,但是能引用 环境变量.子shell可以引用父shell中声明的任何环境变量.
34,shift 格式: shift [variable] 没有参数的shift命令向左移动argv数值,即argv[1]的数值被argv[2]所代替,如果 argv没有被设置或者数值少于一个词时将发声错误.带有其数值为列表或数组的 variable,该命令将列表和数组的数值向左移动.
35,source 格式: source [-h] name [argument...] source读出并执行以name命名的命令,通常是shell脚本(不能把这些命令放在历史 列表中).把任何参数输入argv中.用-h选项,命令被放入历史列表但是不立即执行.
36.stop 格式: stop %job\ job... stop命令停止指定的任务或在后台执行的进程.也可以用一个数字或字符串引用一个 任务,如果不存在默认的任务,那么仅仅stop不能停止当前的任务.
37,switch 格式;
代码:
switch (test-string)
case pattern:
commands
breaksw
case pattern:
commands
breaksw
default:
commands
breaksw
endsw | switch结构在几个可能的选项中进行选择.此结构与BASH中的case结构非常类似 通过把字符串与几个可能的模式进行选择,每个可能的模式都与一系列命令相关 联,如果没有相匹配的项,则执行相关的命令,.switch结构以关键词switch和放在 圆括号中的test-string开始,字符串常由变量求值导出,然后是一系列的模式,每个 模式pattern前是关键词case,以冒号:结束,冒号后列出与选择有关的commands,以 breaksw终止command,在所有被列出的模式之后,关键词endsw结束switch结构,注意, 每个测试表达式的命令组的最后一个命令是breaksw,每个测试表达式被逐一测试, 直到找到相匹配的内容,如果没有找到相匹配的项,则执行默认项default.用关键词 default表示默认选择,default项是可选的.但是它有助于通知用户没有匹配的测试 字符串.举例:
代码:
lschoice
#
echo s.List sizes
echo l.List files infomation
echo c.List C files
echo -n "Please enter choice:"
set choice=$<
switch ($choice)
case s:
ls -s
breaksw
case l:
ls -l
breaksw
case c:
ls *.c
breaksw
default:
echo Invalid Option
breaksw
endsw | (输出略)
38,time 格式: time [command] 如果没有参数,此命令显示当前shell的时间累计,用一条命令作为参数,它执行命令 并显示时间累计.
39,umask 格式: umask [value] 此命令指定用户文件建立掩码,掩码用八进制表示.
40,unalias 格式: unalias pattern 此命令删除其名称与pattern匹配的所有别名.
41,unset 格式:unset pattern 此命令取消定义shell变量,名称可能是匹配了几个变量的pattern(尽量避免用 unset *,因为它将取消所有的变量)
42,unsetenv 格式: unsetenv pattern 此命令取消定义环境变量,名称可能是匹配几个变量的pattern,也尽量避免用 unsetenv *,因为它将删除所有的环境变量.
43,wait 此命令指示shell等待全部的后台任务的完成,在一个交互的shell环境中,可中断 一个wait操作,并显示剩余的任务.
44,where 格式:where command 此命令报告所有已知的命令历程,包括别名,内建和可执行的路径.
45,which 格式: which command 此命令显示shell要执行的指定的任务.
46,while 格式: while(expression) command end 此循环重复执行命令,以关键词while开始,接着是圆括号括起来的表达式expression 以end结束循环. while循环很容易与switch结构结合,构成菜单的驱动程序.举例:
代码:
lschoicesw
#
set again=yes
while ($again==yes)
echo "1.List sizes"
echo "2.List files information"
echo "3.List C files"
echo "4.Quit"
echo -n "Please enter choice:"
set choice=$<
switch ($choice)
case 1:
ls -s
breaksw
case 2:
ls -l
breaksw
case 3:
ls *.c
breaksw
case 4:
set again=no
echo good-bey
breaksw
default:
echo Invalid Option
endsw |
| | |