在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在*unix系统中,常用的shell有sh,bash,csh/tcsh, ksh. sh来自于systemV的Unix,是传统的Unix的shell,直到现在很多的系统管理员仍然喜欢使用sh。 下面描述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 全局变量的定义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[*] 3)命令替换 通过set x = `cmd`来执行命令,且结果赋值给变量。 复制代码 代码如下: set d = `date` echo $d echo $d[6]-$d[2]-$d[3] 4)命令行参数 通过$argv[1],$argv[2]或$1,$2来访问命令行参数。命令行参数的个数为$#argv。 5)文件名扩展的元字符 只能使用?,*,[abc],[a-c]。 6)IO重定向和管道 将命令的输出重定向到文件为>。 将命令的输出和报错信息重定向到一个文件cmd>&file。 7)从键盘读取并保存到变量中 复制代码 代码如下: set var = $< 8)算术 复制代码 代码如下: @ var = 5 + 5 echo $var @ v2 = $var + 3 echo $v2 9)代字符号扩展 ~username 表示username的home目录。 10)别名 alias m more 为more创建别名m。 11)初始化文件 .login 在登录时执行的文件。 12) label 和 goto csh中没有函数的概念,使用类似windows批处理中的label和goto。 复制代码 代码如下: goto label ...... label: .... 13) if/else/switch/case 复制代码 代码如下: if(expression)then commands endif if {(command)} then if(expression) then switch("$value") 14 while/foreach 复制代码 代码如下: while(expression) commands continue break end 15、repeat repeat表示重复执行后面的命令。 复制代码 代码如下: repeat 3 "echo helloworld" 16、csh中设置环境变量PATH的方法 csh中使用path代替PATH,设置类似于数组的使用。 复制代码 代码如下: set path = ($path /home) echo $path echo $PATH 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 onintr 命令后跟一个标号名,finish是用户自定义的标号。如果发生中断,控制将被转移到finish标号。通常该行位于脚本的开头。除非当程序正在执行时按ctrl+C(中断键),此时控制将被转移到该标号。onintr - 表示屏蔽所有的中断,此时按下ctrl+C将会被忽略。 23、noclobber 禁止覆盖变量,设定 $noclobber 预设变量改变输出重定向特性. 变量设定语法 set noclobber 取消变量设定语法 unset noclobber 这个 noclobber 变量,它的功能便是停止重定向符号“>”的覆盖(overwiting)已存在文件以及符号“>>”要将字符写入一个不存在的文件时,自动产生该文件的特性。 仅用两个例子让读者明白,设定后的实际使用状况。 例子一: 复制代码 代码如下: % ps axu > testfile % set noclobber % echo "test set noclobber" > testfile testfile: File exists. % echo "test set noclobber" >! testfile % 例子二: 复制代码 代码如下: % set noclobber % cat /etc/passwd >> nopass nopass: No such file or directory % cat /etc/passwd >>! nopass % |
请发表评论