C Shell 详解 | 您所在的位置:网站首页 › shell脚本常用功能 › C Shell 详解 |
C shell 也是 shell 的 一种,以下为一个简单 cshell脚本; #!/bin/csh //开头解释文件为 csh, 必须写 set a="helloworld" //shell 一般语法 echo $a //shell 一般语法 cd .. //系统命令cd ls //系统命令ls 一、C shell 的含义与作用含义:是一种编程语言,有自己的语法;但其多数主要面向 命令 进行编程 作用:更加系统的执行用户的命令,解释执行用户的命令,如写一个shell 脚本 ,脚本中可能含义多个系统命令,shell执行时,就一起执行了多个命令,称为批处理。 二、C shell 的编程 重点知识编写shell 脚本 须知: 编写工具:vim 、gvim shell脚本的扩展名:.csh 文件 开头必须写:#! /bin/csh //用来说明 该文件是 csh 格式 特殊符号说明: $ : 表示取值、取消回显 # :表示 注释 echo : 表示 输出、显示 (1)变量文献参考: (64条消息) 【shell】Cshell_lbt_dvshare的博客-CSDN博客_cshell (64条消息) [Cshell]Cshell基本語法 --- 從入門到精通_gsithxy的博客-CSDN博客_cshell C Shell 编程中,需要用 set 修饰 变量,变量一直到脚本执行结束。 shell内变量只能在当前shell 进程中使用,不能跨进程。 注意:等号两边不能有 空格; set a="helloworld"//屏幕输出 helloworld set a="helloworld" echo $a//屏幕输出 任意想说的内容 echo "任意内容" (2)全局变量setenv 定义全局变量,类似于define setenv NAME "data" //脚本中所以 NAME 都是 “data” (3)数组数值定义:array[index] //index 从1开始,与C语言不同 //通过$#myarr来查看元素的个数; set array=(data1, data2, data3) //array[1] = data1, array[2] = data2; unset array[1] //删除data1 unset array //删除整个数组 echo array[1] //输出 (4)调用子脚本在file.csh中调用 file2.csh 脚本: source ./file2.csh //在file.csh中写 (5)环境变量用 export 修饰的变量, 环境变量的传递是单向的,可以由子进程传递到父进程。 //用于传递参数 export envir="this is envir" (6)命令键入参数通过$argv[1],$argv[2]或$1,$2来访问命令行参数。 命令行参数的个数为$#argv。 echo $1 // ./csh a 这里指第二个参数 a,第一个参数 ./csh 为 $0 // echo 指在命令行中 输出 (7)Cshell中的命令:参考文献:Linux sed命令完全攻略(超级详细) (biancheng.net) (1)find 命令 (2)sed 命令sed 是流编辑器(Stream Editor),在shell 脚本 和 Makefile 中使用比较常见,把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一个格式输出。 作用:文本1 经过 sed + 脚本 的处理 生成 文本2 使用的两种方式: sed option 'script' file1 file2 // sed 参数 ‘脚本文件’ 待处理文件 sed option -f scriptfile file1 file2 // sed 参数 ’脚本文件‘ 待处理文件 【1】option-n //默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,而该选项会屏蔽启动输出,需使用 print 命令来完成输出。 -e //允许多个脚本指令被执行 -i //此选项会直接修改源文件,要慎用。 -f //该选项会将其后文件中的脚本命令添加到已有的命令中 代码举例: sed -n '2p' text.txt //只显示text.txt的第二行 【2】脚本命令说明:脚本命令都是写在 'script' 中的 s //substitution 替换 d //delete 删除 i //insert 插入 a //append 追加 s 替换脚本命令此命令的基本格式为:[行数]s/需要替换的内容/替换的新内容/flags标记 flags 标记: n //1~512 之间的数字,表示指定要替换的字符串出现第几次时才进行替换,例如,一行中有 3 个 A,但用户只想替换第二个 A,这是就用到这个标记; g //对数据中所有匹配到的内容进行替换,如果没有 g,则只会在第一次匹配成功时做替换操作。例如,一行数据中有 3 个 A,则只会替换第一个 A; p //会打印与替换命令中指定的模式匹配的行。此标记通常与 -n 选项一起使用。 w file //将缓冲区中的内容写到指定的 file 文件中; & //用正则表达式匹配的内容进行替换; \n //匹配第 n 个子串,该子串之前在 pattern 中用 \(\) 指定。 \ //转义(转义替换部分包含:&、\ 等) 代码举例: sed 's/123/567g' test.txt //将test.txt中所有的123替换为567 sed 's/test/trial/2' data.txt //将data.txt中的第二个test文件替换为trial d 删除脚本命令此命令的基本格式为:[行数]d [删除内容] 代码举例: sed '2d' test.txt //将第二行删除 i 插入脚本命令此命令的基本格式为:[行数]i [插入内容] 代码举例: sed '2i aaaaaa' text.txt //在text.txt 的第二行插入 aaaaaaa a 追加脚本命令此命令的基本格式为:[行数]a [插入内容] 代码举例: sed '2a aaaaaa' text.txt //在text.txt 的第二行追加 aaaaaaa (3)awk 命令sed 是以行为单位处理文件的,awk则是以 行和列 处理文件,所以功能更加强大。 awk 缺省的行分隔符是换行,缺省的列分隔符是连续的空格和tab, 使用的两种方式: sed option 'script' file1 file2 // sed 参数 ‘脚本文件’ 待处理文件 sed option -f scriptfile file1 file2 // sed 参数 ’脚本文件‘ 待处理文件 最常见的用法就是过滤哪一列: xxxxx | awk -F: '{print $3}' //以 : 为列分隔符 打印第3列 cat /etc/passwd | awk -F: '{print $3}' //以 :为分隔符,打印第3列 awk '{print $2}' test.txt //打印test.txt 文件的第二列 【1】option-n //默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,而该选项会屏蔽启动输出,需使用 print 命令来完成输出。 -e //允许多个脚本指令被执行 -i //此选项会直接修改源文件,要慎用。 -f //该选项会将其后文件中的脚本命令添加到已有的命令中 【2】脚本命令(三种方式)//'action' 直接写脚本 awk '{print $2}' test.txt //打印test.txt 文件的第二列//' /定向/action' 有定向的脚本 awk '/^echo/{print $2}' test.txt //打印test.txt 文件含echo的第二列//condition action 有条件的执行脚本 awk '$2=75 {print $0;}' testfile (4)grep 命令 (5)locate 命令 三、C shell 的运行与使用(1)编写一个C shell 脚本: text.csh (2)给予 text.csh 脚本文件 可执行权限, 因为编写的脚本文件 是没有可执行权限的 命令 : chmod a+x text.csh ( x 是 可执行权限) 或者 : chmod +x text.csh (3) 执行脚本的方式: 【a】直接 ./文件名 :会产生子进程,父进程中 cd .. 命令不执行 ./text.csh 【b】source ./文件名 : 逐一执行脚本命令,不会产生 子进程 source ./text.csh |
CopyRight 2018-2019 实验室设备网 版权所有 |