文档库 最新最全的文档下载
当前位置:文档库 › Genesis2000脚本编写常用命令解析

Genesis2000脚本编写常用命令解析

Genesis2000脚本编写常用命令解析
Genesis2000脚本编写常用命令解析

Genesis2000脚本编写常用命令解析

1. switch 的用法,注意每一个case 必须要以breaksw 结尾

否则会继续执行下一个case 的命令

(1) 另外,$< 的意思是取得使用者的stand input

(2) echo 若加上-n 的选项,则游标会停留在该行最后

echo -n "Input one color: "

set STOPLIGHT = $<

switch ($STOPLIGHT)

case red:

echo "red"

breaksw

case orange:

echo "orange"

breaksw

case green:

echo "green"

breaksw

default:

echo "you input $STOPLIGHT"

endsw

--------------------------------------------------------------------

2. 利用set 来取得变数,set ABC = "I am ABC"

也可以利用`command` 来取得命令

且外,case 也可以用万用字元* 来代替

set VER = `uname -r`

switch ($VER)

case 5.5:

echo "run the setup of $VER"

breaksw

case 5.3:

echo "run the setup of $VER"

breaksw

case 5.*:

echo "like 5.x"

breaksw

case 4.*:

echo "like 4.x"

breaksw

default:

echo "no idea"

endsw

-------------------------------------------------------------------- 3. if 的语法,比较数字

set n1 = 1

set n2 = 2

if ($n1 == $n2) then

echo "$n1 Equal $n2"

else

echo "$n1 Not Equal $n2"

endif

-------------------------------------------------------------------- 4. if 的语法,比较字串

set n1 = abcdef

set n2 = abcde

if ($n1 == $n2) then

echo "$n1 Equal $n2"

else

echo "$n1 Not Equal $n2"

endif

-------------------------------------------------------------------- 5. if 的语法,比较相似的字串

set n1 = abcdef

set n2 = abcde

if ($n1 =~ $n2) then

echo "$n1 Like $n2"

else

echo "$n1 Not Like $n2"

endif

-------------------------------------------------------------------- 6. if 的语法,比较数字的大小

set n1 = 1

set n2 = 2

if ($n1 > $n2) then

echo "$n1 > $n2"

else

echo "$n1 < $n2"

endif

-------------------------------------------------------------------- 7. 每分钟执行一次的程式

# mm 等于当天时间的【分钟】数

set mm = `date | cut -d' ' -f4 | cut -d: -f2`

if ( -r $0.out ) then

rm $0.out

touch $0.out

else

touch $0.out

endif

while ( $mm <= 16 )

set mm = `date | cut -d' ' -f4 | cut -d: -f2`

echo "$mm now is `date`"

sleep 60

#echo "$mm now is `date`" >> $0.out

end

echo "Over" >> $0.out

-------------------------------------------------------------------- 8. 一个回圈的范例,并且利用expr 去作加的动作

回圈的语法如下:

foreach number (1 2 3)

echo $number

end

set counter = 0

while ($counter <= 10)

echo "sleeping for 5 seconds"

sleep 5

counter = `expr $counter + 1 `

end

--------------------------------------------------------------------

9. 设定一个用当天月份与日期作为档案名称的程式

如今天是10/02 , 则$prefix 会等于该程式+ 1002

date.csh1002

set prefix = `basename $0``date '+ %m%d'`

echo $0

echo $prefix

--------------------------------------------------------------------

10. 移除在foreach 回圈内指定的档案内的font 字串

foreach file ([b,e,g,h,s]*.html)

echo -n "Processing $file, remove the line number `grep -n font $file`"

# $log 表示这个$file 有几个font 字串

set log = `grep -c font $file`

if ( $log == '0' ) then

echo ", pass $file"

else

# 先找出该档案的第一次出现font 的行数,如果3,则$cmd = 3d

set cmd = `grep -n font $file | cut -d: -f1 | head -1`d

# 利用sed 去执行删除的动作,并把结果输出到${file}1

sed $cmd $file > ${file}1

# 如果${file}1 没有资料,则passing

if ( -z ${file}1 ) then

echo " , ${file}1 is zero"

else

cp ${file}1 $file

rm {$file}1

echo " , $file remove ok"

endif

endif

end

# 后来看过sed 的更进一步用法,发现先前写的太笨了,试试这个

# sed /font/d $file > ${file}1

# 一次OK, 我真是大笨蛋

--------------------------------------------------------------------

11. 功能:将指定的档案中,出现第一次【回】的那一行,加上 xxxx foreach file (sky*.html)

set filetitle = ftitle

# 主要部份为sed 部份s/^ *// 表示将该行第一个字元前的空白删除echo "`grep 回$file | head -1 | sed -e 's/^ *//'`" > $ftitle

# 将刚刚那一行,再插回去

head -1 $file > ${file}head

sed 1d $file > ${file}1

cat $ftitle >> ${file}head

cat ${file}1 >> ${file}head

cp ${file}head $file

rm ${file}1

rm $ftitle

rm ${file}head

echo "$file ok"

end

--------------------------------------------------------------------

12. 一个实际建立一个ftp server 的程式

里面包括许多应用,相当有参考价值

( 未完成)

set path = ( /usr/bin /usr/sbin )

#

set true = `grep -c ftp /etc/passwd`

if ( $true == 0 ) then

echo "no ftp user in your system"

echo -n "do you want to create the ftp user? "

set answer = $<

if ($answer == 'y' || $answer == 'Y') then

set maxid = `sort /etc/passwd | tail -1 | cut -d: -f3`

echo $maxid

set newid = `expr $maxid + 1`

echo $newid

echo "/usr/sbin/useradd -d /home1/ftp -u $newid -s /etc/false ftp"

endif

else

echo "Good. Your system already has the ftp user. "

set ftphome = `grep ftp: /etc/passwd | cut -d: -f6`

echo $ftphome

endif

if ( -z $ftphome ) then

echo "ftphome must be non-null"

exit 2

endif

if ( $ftphome == "/usr" || $ftphome == "/" ) then echo "ftphome can't be / or /usr"

exit 2

endif

# create the ftp home directory

if ( ! -d $ftphome ) then

echo "mkdir $ftphome"

endif

echo "Setting up the ftphome for SunOS `uname -r`"

if ( ! -d $ftphome ) then

echo "mkdir -p $ftphome/usr/bin"

endif

cp /bin/ls $ftphome/usr/bin

chmod 111 $ftphome/usr/bin/ls

chown root $ftphome/usr/bin

chmod 555 $ftphome/usr/bin

if ( -r $ftphome/bin ) then

mv -f $ftphome/bin $ftphome/Obin

endif

ln -s usr/bin $ftphome

-------------------------------------------------------------------- 13. 取得该使用者的UID

if ( $#argv == 0 ) then

echo "$0 usage: $1 username"

exit 2

endif

set uid = `grep $1 /etc/passwd | cut -d: -f3`

echo $uid

--------------------------------------------------------------------

14. 将指定档案内的html 取代成htm

foreach file ( *.html )

echo "Processing $file ..."

sed s/html/htm/ $file > ${file}1

cp ${file}1 $file

rm ${file}1

end

--------------------------------------------------------------------

15. 一个简简单单的范例,看看就好

#!/bin/csh -f

echo .................

echo WELCOME to \* TAPE COPY \*

echo .................

echo Enter your name:

# $< can read from stand input

set name = $<

echo " "

echo Hi $name \!

set D = `date`

echo Today\'s date is $D[1] $D[2] $D[3]

if ($D[1] == Mon) then

echo -------------------------------------------------------------

echo Today is $D[1]day $name, it\'s time to copy your directorys\!

echo -------------------------------------------------------------

else

echo -------------------------------------------------------------

echo Today is $D[1]day $name, no tape copies today\!

echo -------------------------------------------------------------

endif

--------------------------------------------------------------------

16. 一个finger 的程式

set FINGER = "/usr/ucb/finger"

if ( -x $FINGER ) then

if ( $#argv == 0 ) then

cat << TAG

---------------------------------

Hahahah ....

---------------------------------

TAG

else

$FINGER "$*"

endif

else

echo "Cannot find finger on this system."

endif

--------------------------------------------------------------------

17. 取得变数的方法

set W = `who -r`

echo $W[9]

--------------------------------------------------------------------

18. 更改档案名称,将*.html --> *.htm

# rename *.html to *.htm

echo -n "This will change *.html to *.htm. Can I continue ? (y/n) : " set input = $<

if ( $input != "y" && $input != "Y" ) then

echo "Ok. Quit..."

exit 2

endif

foreach file ( *.html )

echo "Processing $file to `basename $file .html`.htm "

mv $file `basename $file .html`.htm

end

--------------------------------------------------------------------

19. 更改档案名称,将*.htm --> *.html

echo -n "This will change *.htm to *.html. Can I continue ? (y/n) : " set input = $<

if ( $input != "y" && $input != "Y" ) then

echo "Ok. Quit..."

exit 2

endif

# rename *.htm to *.html

foreach file ( *.htm )

echo "Processing $file to `basename $file .htm`.html "

mv $file `basename $file .htm`.html

end

-------------------------------------------------------------------- 20. 将大写的档名改成小写的档名

tr string1 string2 会将standard input 的字串,

所对应到的string1, 都以string2 取代

foreach file ( * )

mv $file `echo $file | tr '[A-Z]' '[a-z]'`

end

-------------------------------------------------------------------- 21. 将小写的档名改成大写的档名

foreach file (*)

mv $file `echo $file | tr '[a-z]' '[A-Z]'`

end

linux+shell脚本语言基础知识

linux shell脚本语言基础知识 一.shell简介 Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的界面,更确切的说,shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用Shell脚本编程,完成更加复杂的操作。 shell是一个命令解释器,它从输入设备读取命令,再将其转为计算机可以了解的指令,然后执行它。在linux中,shell又不仅是简单的命令解释器,而且是一个全功能的编程环境。 Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell (/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的Shell语言的语法有所不同,所以不能交换使用。每种Shell都有其特色之处,基本上,掌握其中任何一种就足够了。通常用Bash,也就是Bourne Again Shell进行编程。 二.shell使用 1.建立和运行shell程序 shell脚本程序:按照一定的语法结构把若干linux命令组织在一起,是这些命令按照我们的要求完成一定的功能。它可以进行类似程序的编写,并且不需要编译就能执行。(只需修改其权限) 像编写高级语言的程序一样,编写shell程序需要一个文本编辑器,如VI和VIM,通常使用VIM文本编辑器,支持更便利的插入模式。 首先使用VIM编辑器编辑一个hello.sh文件: #!/bin/bash #hello world example

CAM工程设计之GENESIS基础步骤

新建料号: 在File→Create(创建),弹出Create Entity Popup对话框,其中Entity Name (输入料号)输入厂内料号,Database(文件库名),双击可获得,为固定的!点击Ok 确定即可! 导入文件:双击料号,进入Engineering Toolkit窗口 导入资料、查看并更正错误: 首先查看层,若出现细线或出现大块的图案为D码有问题!必须在Rep层中点击右键选择D码学习器去修改,打开后出现Wheel Template Editor窗口!若确认是单位错了,就在菜单Parms中选择Global中修改单位,点击后出现Global Parameters Popup对话框,改了单位后点击Ok即可,然后Actions菜单中选择Translate Wheel 执行D码文件,若有红色问题,则要手工修改,选中问题点击Sym:,确认形状,输入对应的参数,点击Ok即可,完成此动作,在File中选Closs关闭文件。 用同样的方法一层一层的修改其它问题层,改完后最后修改drl钻带文件。首先确认尺寸,然后在Rep层右键打开D码学习器去修改,确认单位,若有问题则同上方法修改,然后再查看有否连孔,若有则是格式不对,再查看孔位是否很散,若有则是省零格式错误。常用的几种格式:英制inch、mil有:2:3 2:4 2:.5 3:5 公制mm有:3:3 4:4 在钻带层(drl)点击右键选择Aview Ascii查看文字档,看最长的坐标,数X、Y 有几位数,看坐标如有八位数则用3.5和4.4去修改,在钻带层点击Parameters中选Numberef Fromat修改小数格式,坐标单位同时跟小数格式一改,同时钻带单位也要和坐标单位一致! 省零格式:Leading 前省零,None不省零,Trailing 后省零。 Gerber格式通常是前省零,钻带格式通常是后省零。 层命名、排序、定属性: 改完后点击Ok即可,所有格式改完后,打开所有层,执行进去。执行后,打开Job Matrix特性表命名层名 art001代表顶层线路。在Layer中命名gtl art002代表底层线路。在Layer中命名gbl dd001代表分孔图。在Layer中命名gdd sm001代表顶层绿油,在Layer中命名gts sm002代表底层绿油。在Layer中命名gbs

SIPp脚本编写方法基础m

SIPp脚本编写方法基础

目录 SIPp脚本编写方法入门 (1) 1. 脚本格式 (3) 1.1.基于XML进行扩展 (3) 1.2.DTD扩展语法规则 (3) 1.3.脚本结构 (3) 1.4.注释 (5) 2. 脚本类型 (5) 2.1.UAC (5) 2.2.UAS (5) 2.3.3PCC(三方通话) (6) 2.4.OCC(Out-of-call) (6) 3. 命令与属性 (6) 3.1.常用命令 (6) 3.2.常用属性列表 (8) 3.3.正则表达式 (10) 4. 变量与关键字 (11) 4.1.关键字的使用 (11) 4.2.变量定义与使用 (13) 4.3.鉴权 (15) 5. 分支和跳转 (16) 5.1.标签 (16) 5.2.条件判断 (16) 5.3.跳转和循环 (17) 5.4.概率分支 (18) 6. 文件引用 (19) 6.1.外部文件格式 (19) 6.2.引用方法 (20) 6.3.文件索引 (20) 7. 脚本中的命令操作 (21) 7.1.内部命令 (21) 7.2.外部命令 (21) 7.3.媒体命令 (21) 8. 附录 (23) 修订记录 (24)

1.脚本格式 1.1.基于XML进行扩展 SIPp的测试脚本遵循标准的XML V1.0版本的语法规范,XML即“可扩展标记语言”eXtensible Markup Language 的缩写,W3C组织与1998年发布XML 1.0规范。 1.2.DTD扩展语法规则 SIPp的执行目录中,存在一个sipp.dtd文件。该文件为标准的xml扩展语法规则,在该文件中,对send、recv、pause等元素增加了定义,包括其属性列表等内容,可作为脚本文件格式的校验。 1.3.脚本结构 一个标准的SIPp脚本,文件起始应为通用的xml前导区和DTD文件定义区如图所示: 接下来使用包括的部分,即为脚本的正文部分。 sipp脚本正文部分,包含如下几个区域: 1.初始化区 在初始化区域中,通常用来进行全局变量的定义和赋值等操作,在脚本未进行逻辑流程前,预先完成初始化动作。 初始化区是在脚本正文的最开始,通过使用命令,并在其之间插入一些

Shell脚本编写基础

Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell 是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。 一、什么是shell 当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shel l(外壳)的程序。那么,shell是什么呢?确切一点说,shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell 来启动、挂起、停止甚至是编写一些程序。 当用户使用Linux时是通过命令来完成所需工作的。一个命令就是用户和shell之间对话的一个基本单位,它是由多个字符组成并以换行结束的字符串。shell解释用户输入的命令,就象DOS里的https://www.wendangku.net/doc/9a17452113.html,所做的一样,所不同的是,在DOS中,https://www.wendangku.net/doc/9a17452113.html,只有一个,而在Linux下比较流行的shell有好几个,每个shell都各有千秋。一般的Linux系统都将bash作为默认的shell。 二、几种流行的shell 目前流行的shell有ash、bash、ksh、csh、zsh等,你可以用下面的命令来查看你自己的shell类型: #echo $SHELL $SHELL是一个环境变量,它记录用户所使用的shell类型。你可以用命令: #shell-name 来转换到别的shell,这里shell-name是你想要尝试使用的shell的名称,如ash等。这个命令为用户又启动了一个shell,这个shell在最初登录的那个shell之后,称为下级的shell或子shell。使用命令: $exit 可以退出这个子shell。 使用不同的shell的原因在于它们各自都有自己的特点,下面作一个简单的介绍: 1.ash ash shell是由Kenneth Almquist编写的,Linux中占用系统资源最少的一个小shell,它只包含24个内部命令,因而使用起来很不方便。 2.bash bash是Linux系统默认使用的shell,它由Brian Fox和Chet Ramey共同完成,是Bourne Again Shell的缩写,内部命令一共有40个。Linux使用它作为默认的shell是因为它有诸如以下的特色: (1)可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令。 (2)自动通过查找匹配的方式给出以某字符串开头的命令。 (3)包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。 3.ksh ksh是Korn shell的缩写,由Eric Gisin编写,共有42条内部命令。该shell最大的优点是几乎和商业发行版的ksh完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。 4.csh

常用LINUX命令及脚本

常用LINUX命令及shell脚本 说明:本文档介绍的命令只说明比较有用的参数,要查看命令详情请‘MAN‘ 第一部分常用LINUX命令 (1) 1,基础命令 (1) 2,系统性能情况查看命令 (5) 3,网络命令 (6) 4,日志处理 (7) 5,其它命令 (9) 第二部分ftp命令说明 (9) 第三部分shell脚本 (10) 1批量创建目录 (10) 2,过滤出日志中昨天产生的线程挂起日志及详情代码 (11) 第一部分常用LINUX命令 1,基础命令 who 用于查看当前在线上的用户情况 参数: -m 显示当前用户名及详情 -q 显示用户的登陆帐号和登陆用户的数量 w 显示目前登入系统的用户信息 参数: -f 开启显示用户从何处登入系统 范例: was@linux-was:/tmp> w -f 00:55:11 up 48 min, 1 user, load average: 0.00, 0.02, 1.86 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT was pts/0 192.168.10.2 00:30 0.00s 0.84s 0.00s w –f JCPU指的是与该tty终端连接的所由进程占用的时间,不包括过去的后台作业时间;PCPU 指

的是当前进程(即w项中显示的)所占用的时间 id 查看显示目前登陆账户的uid和gid及所属分组及用户名 linux-was:~ # id uid=0(root) gid=0(root) groups=0(root) was@linux-was:/tmp> id uid=1000(was) gid=100(users) groups=16(dialout),33(video),100(users) hostname 显示当前主机名 ls 显示当前文件和目录 参数: -l 列出文件的详细信息 -a 列出目录下的所有文件,包括以 . 开头的隐含文件 -t 以时间排序 -r 对目录反向排序 -S 按文件大小排序 同时此命令也可查看文件或目录权限 pwd 查看”当前工作目录“的完整路径 当你在终端进行操作时,你都会有一个当前工作目录。 在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置 参数: -P 输出物理路径,针对链接的参数 cd 进入特定的目录 参数: /指定目录进入指定的目录 .. 返回上一级目录 touch 创建文件 mkdir 创建目录 参数: -p 此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录

Genesis2000脚本命令大全

Genesis2000脚本命令大全 1.switch的用法,注意每一个case必须要以breaksw结尾 否则会继续执行下一个case的命令 (1)另外,$<的意思是取得使用者的stand input (2)echo若加上-n的选项,则游标会停留在该行最后 echo-n"Input one color:" set STOPLIGHT=$< switch($STOPLIGHT) case red: echo"red" breaksw case orange: echo"orange" breaksw case green: echo"green" breaksw default: echo"you input$STOPLIGHT" endsw

--------------------------------------------------------------------2.利用set来取得变数,set ABC="I am ABC" 也可以利用`command`来取得命令 且外,case也可以用万用字元*来代替 set VER=`uname-r` switch($VER) case5.5: echo"run the setup of$VER" breaksw case5.3: echo"run the setup of$VER" breaksw case5.*: echo"like5.x" breaksw case4.*: echo"like4.x" breaksw default: echo"no idea" endsw

--------------------------------------------------------------------3.if的语法,比较数字 set n1=1 set n2=2 if($n1==$n2)then echo"$n1Equal$n2" else echo"$n1Not Equal$n2" endif --------------------------------------------------------------------4.if的语法,比较字串 set n1=abcdef set n2=abcde if($n1==$n2)then echo"$n1Equal$n2" else echo"$n1Not Equal$n2"

genesis脚本编写10

第十章 awk 工具编程 我们在genesis 编程中,awk 工具会经常用到,awk 工具很强大,它不仅可以从一个很大的文本文件中抽取数据包,还可以进行算术运算、比较运算等等很多功能,应该说awk 是一种比较完整的编程语言,本章我们就一一介绍这个较为强大的工具。 刘才林数字签名人 刘才林DN :cn=刘才林,c=CN-中国,o=上海桌凯,ou=工程,email=hillohowareyougo@https://www.wendangku.net/doc/9a17452113.html, 原因:我是该文档的作者日期:2008.07.03 10:07:27 +08'00'

10.1:awk简介: awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它可以在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。awk分别代表其作者姓氏的第一个字母。因为它的作者是三个人,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。 Awk后来在Linux系统上发展为gawk,在unix系统上发展为nawk,而在genesis2000编程的windows系统中,我们要应用awk95,它们之间也有一些区别,如果你编写的genesis2000程序要应用于多个系统,请注意您的awk程序是否能在各个系统中运行,并且定义不同系统为不同的awk,因为最早的awk很多功能都不能实现。下面的讲解以gawk为主,但我们简称为awk,请大家不要混淆概念。 10.2:awk命令格式和选项: 10.2.1:awk的语法有两种形式: awk [options] 'script' var=value file(s) awk [options] -f scriptfile var=value file(s) 10.2.2:awk的常用选项: ●–F fs:使用fs作为输入记录的字符分隔符,如果省略该选项,awk使用环境变量 IFS的值。 ●–f filename:从文件filename中读取awk_scripts。 ●–v 为awk_script设置变量。 10.3:awk的调用方式: awk的调用方式可分为三种: (1):直接写成命令行(在awk程序很短的情况下) (2):将awk_scripts放入脚本并以#!/bin/awk 作为开头,给予它可执行权限,然后执行程序。 (3):将awk程序插入一个单独脚本文件,然后用:awk –f进行调用。 10.4:模式和动作: 任何awk语句都由模式和动作组成。在一个awk脚本中可能有许多语句。模式部分决定动作语句何时触发及触发事件,处理即对数据进行的操作,如果省略模式部分,动作将时刻保持执行状态;如果动作被省略,则缺省的动作被执行,既显示出所有符合模式的输入行而不做任何的改动。 10.4.1:模式: 模式可以是任何条件语句或复合语句或正则表达式。模式包括两个特殊字段BEGIN和END。 使用BEGIN语句设置计数和打印头。BEGIN语句使用在任何文本浏览动作之前,之后文本浏览动作依据输入文件开始执行。END语句用来在awk完成文本浏览动作后打印输出文本总数和结尾状态标志。如果不特别指明模式,awk总是匹配或打印行数。 10.4.2:动作: 动作都在{}内,主要分为四个部分: ●变量或数组赋值: ●输出命令: ●内置函数: ●控制流命令: 10.4.3:范例:

常用shell脚本指令

常用shell脚本命令 1、显示包含文字aaa的下一行的内容: sed -n '/aaa/{n;p;}' filename 2、删除当前行与下一行的内容: sed -i '/aaa/{N;d;}' filename 3、删除当前行与下两行的内容: sed -i '/aaa/{N;N;d;}' filename 依次类推,删除三行,则为{N;N;N;d;},分析知:N为next 4、得出以空格为分割的字符串中单词的个数,即统计个数: awk ' { print NF } ' 如显示字符串VALUE中的单词个数,其中VALUE为:aaa bbb ccc ddd ee f 则执行 echo $VALUE | awk ' { print NF } ' 后的结果为6 5、在linux中建立一个文件与另一文件的链接,即符号链接 ln -s /var/named/chroot/etc/named.conf named.conf 这要就建立了当前目录的文件named.conf对/var/named/chroot/etc/named.conf 的符号链接。即操作named.conf就意味着操作实际文件/var/named/chroot/etc/named.conf ,这时用ll命令查看的结果如: lrwxrwxrwx 1 root root 32 Mar 22 12:29 named.conf -> /var/named/chroot/etc/named.conf 注意:当用sed来通过named.conf来删除一部分信息时,会将符号链接的关系丢掉,即会将named.conf变成一个实际文件。所以需对实际文件进行删除操作。 6、显示指定字符范围内的内容: 如:显示文件test.txt中字符#test begin与#test end之间所有的字符 sed -n "/#test begin/,/#test end/p" test.txt 或 awk "/#test begin/,/#test end/" test.txt 在日常系统管理工作中,需要编写脚本来完成特定的功能,编写shell脚本是一个基本功了!在编写的过程中,掌握一些常用的技巧和语法就可以完成大部分功能了,也就是2/8原则. 1. 单引号和双引号的区别 单引号与双引号的最大不同在于双引号仍然可以引用变量的内容,但单引号内仅是普通字符,不会作变量的引用,直接输出字符窜。请看如下例子: [root@linux ~]# name=HaHa [root@linux ~]# echo $name HaHa [root@linux ~]# myname="$name is wow" [root@linux ~]# echo $myname HaHa is wow [root@linux ~]# myname='$name is wow'

常用shell脚本

如何用脚本实现分割文件 #!/bin/bash if [ $# -ne 2 ]; then echo 'Usage: split file size(in bytes)' exit fi file=$1 size=$2 if [ ! -f $file ]; then echo "$file doesn't exist" exit fi #TODO: test if $size is a valid integer filesize=`/bin/ls -l $file | awk '{print $5}'` echo filesize: $filesize let pieces=$filesize/$size let remain=$filesize-$pieces*$size if [ $remain -gt 0 ]; then let pieces=$pieces+1 fi echo pieces: $pieces i=0 while [ $i -lt $pieces ]; do echo split: $file.$i: dd if=$file of=$file.$i bs=$size count=1 skip=$i let i=$i+1 done echo "#!/bin/bash" >; merge echo "i=0" >;>; merge echo "while [ $i -lt $pieces ];" >;>; merge echo "do" >;>; merge echo " echo merge: $file.$i" >;>; merge echo " if [ ! -f $file.$i ]; then" >;>; merge echo " echo merge: $file.$i missed" >;>; merge

Shell脚本编程详解-吐血共享

第12章 Shell 脚本编程 ● Shell 命令行的运行 ● 编写、修改权限和执行Shell 程序的步骤 ● 在Shell 程序中使用参数和变量 ● 表达式比较、循环结构语句和条件结构语句 ● 在Shell 程序中使用函数和调用其他Shell 程序 12-1 Shell 命令行书写规则 ◆ Shell 命令行的书写规则 对Shell 命令行基本功能的理解有助于编写更好的Shell 程序,在执行Shell 命令时多个命令可以在一个命令行上运行,但此时要使用分号(;)分隔命令,例如: [root@localhost root]# ls a* -l;free;df 长Shell 命令行可以使用反斜线字符(\)在命令行上扩充,例如: [root@localhost root]# echo “ this is \ >long command ” This is long command 注意: “>”符号是自动产生的,而不是输入的。 12-2 编写/修改权限及执行Shell 程序的步骤 ◆ 编写Shell 程序 ◆ 执行Shell 程序 Shell 程序有很多类似C 语言和其他程序设计语言的特征,但是又没有程序语言那样复杂。Shell 程序是指放在一个文件中的一系列Linux 命令和实用程序。在执行的时候,通过Linux 操作系统一个接一个地解释和执行每条命令。首先,来编写第一个Shell 程序,从中学习Shell 程序的编写、修改权限、执行过程。

12-2-1 编辑Shell程序 编辑一个内容如下的源程序,保存文件名为date,可将其存放在目录/bin下。 [root@localhost bin]#vi date #! /bin/sh echo “Mr.$USER,Today is:” echo &date “+%B%d%A” echo “Wish you a lucky day !” 注意: #! /bin/sh通知采用Bash解释。如果在echo语句中执行Shell命令date,则需要在date 命令前加符号“&”,其中%B%d%A为输入格式控制符。 12-2-2 建立可执行程序 编辑完该文件之后不能立即执行该文件,需给文件设置可执行程序权限。使用如下命令。[root@localhost bin]#chmod +x date 12-2-3 执行Shell程序 执行Shell程序有下面三种方法: 方法一: [root@localhost bin]#./ date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 方法二: 另一种执行date的方法就是把它作为一个参数传递给Shell命令: [root@localhost bin]# Bash date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 方法三: 为了在任何目录都可以编译和执行Shell所编写的程序,即把/bin的这个目录添加到整个环境变量中。 具体操作如下: [root@localhost root]#export PATH=/bin:$PATH [root@localhost bin]# date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day !

Genesis2000脚本编写常用命令剖析

1. switch 的用法,注意每一个case 必须要以breaksw 结尾 否则会继续执行下一个case 的命令 (1) 另外,$< 的意思是取得使用者的stand input (2) echo 若加上-n 的选项,则游标会停留在该行最后 echo -n "Input one color: " set STOPLIGHT = $< switch ($STOPLIGHT) case red: echo "red" breaksw case orange: echo "orange" breaksw case green: echo "green" breaksw default: echo "you input $STOPLIGHT" endsw -------------------------------------------------------------------- 2. 利用set 来取得变数,set ABC = "I am ABC" 也可以利用`command` 来取得命令 且外,case 也可以用万用字元* 来代替 set VER = `uname -r` switch ($VER) case 5.5: echo "run the setup of $VER" breaksw case 5.3: echo "run the setup of $VER" breaksw case 5.*: echo "like 5.x" breaksw case 4.*: echo "like 4.x" breaksw default: echo "no idea" endsw

(完整版)按键精灵常用脚本命令汇集

//~~~~~~~~~~{[做后台的准备]}~~~~~~~~~~~ //下面,用标题名来找父窗口 Hwnd = Plugin.Window.Find(0, "无标题- 记事本") //下面,根据父窗口来找子窗口(找对了标题名才有效) HwndEx = Plugin.Window.FindEx(Hwnd, 0, 0, 0) //下面,用程序名来找父窗口 Hwnd = Plugin.Window.Find("Notepad", 0) //下面,根据父窗口来找子窗口(找对了类名才有效) Hwnd = Plugin.Window.FindEx(Hwnd, 0, "Edit", 0) //~~~(也可以改指定程序的标题名来得来句柄)~~~ //下面,将指定程序名的标题名变为变量 Hwnd = Plugin.Window.Find("Notepad", 0) //改变窗口标题 Call Plugin.Window.SetText(Hwnd,"AJJL") //*********》之后可加第一种父子窗口就OK了《********* //~~~如果以上都不行,只剩下最后一种方法~~~~ //下面,鼠标指向的程序定为Hwnd这个变量(不过一定要加标记,否则变为假后台) hwnd=Plugin.Window.MousePoint() Rem star Goto star //区域模糊找色 //(XY,是坐标)(后面的是句柄,左X,上Y,右X,下Y,16位颜色,找的方式,相似度)XY = Plugin.Bkgnd.FindColorEx(Hwnd, 0, 0, 20, 20, "FFFFFF", 0, 0.9) //将XY坐标变为变量,再折分成X坐标和Y坐标。 MyArray = Split(XY, "|") X = Clng(MyArray(0)): Y = Clng(MyArray(1)) //后台判色 Color = Plugin.Bkgnd.GetPixelColor(hwndex,300,150) If color = "020503" Then //根据固定32位地址的值加红蓝(HP少于就。。。) Val = Plugin.Memory.Read32Bit(Hwnd, &H400000) //注意格式:符号&+字母H+8位地址 If clng(val)<=clng(HP)

GENESIS2000制作资料步骤

GENESIS2000制作資料步驟清單一.鑽孔的制作: 1.去重復孔 2.校正鑽孔 3.定義VIA孔屬性 4.孔徑補償 5.短槽孔制作 6.BGA分刀 7.CPU跳鑽制作(當此板無插件式CPU時可省略此步驟) 8.對雙面開窗的VIA孔進行處理 9.鑽孔總測 10.COPY AOI-NPTH層(特別注意孔數是否同DD中相符) 11.機器比對原稿(公差設5mil) 二.內層負片的制作 1.去除成型線以外的物件 2.優化正負片資料(若客戶設計隔離線非正負片疊加而成,可省略此步驟) 3.去除比鑽孔小的蜘蛛PAD 4.將指示分層的字母加大1MIL制作 5.放大隔離PAD 6.檢測隔離PAD放大的結果 7.補細絲 8.看導通寬度 9.成型削銅 10.總測 11.比對原稿 12.測網絡 13.機器比對原稿 三. 內層正片無線路的制作 1.去除成型線以外的物件 2.去重復PAD 3.去獨立PAD 4.換銅面 5.套隔離 6.檢測銅皮的寬度 7.放大PAD的Ring邊,補償線寬,將指示分層字母加大1mil制作 8.將銅面分別移回相應內層中(移回時不改極性) 9.成型削銅 10.總測 11.比對原稿 12.測網絡 13.機器比對原稿 四. 內層正片有線路的制作 1.去除成型線以外的物件 2.去重復PAD 3.去獨立PAD 4.換銅面 5.套隔離 6.放大PAD的Ring邊,補償線寬,加淚滴 7.套銅面 8.檢測銅皮的寬度 9.將銅面分別移回相應內層中(移回時不改極性) 10.削PAD 11.成型削銅 12.總測 13.比對原稿 14.測網絡 15.機器比對原稿

五. 外層制作 1.去除成型線以外的物件 2.分析資料 3.去NPTH孔上的PAD 4.換PAD 5.換銅面 6.定義SMD屬性 7.PAD的補償 8. 放大PAD的Ring邊 9. 檢測PAD的Ring邊放大的結果 10. 線寬的補償(當資料間距較小需用蝕刻補償制作時,此時可補最小線寬) 11. 套銅面(注意處理銅皮寬度是否有做到5mil以上) 12. 將銅面COPY至相應的線路層 13. 削間距,看IC縮線 14.加淚滴,補針孔 15.蝕刻補線(若前面補線已符合要求達到最佳值時可省略此步驟) 16.獨立線的加補 17.成型削銅的處理 18.檢測PTH孔上的PAD間距是否有6MIL以上 19.加UL MARK(若UL MARK需以文字方式添加可省略此步驟) 20.總測 21.比對原稿 22.測網絡 23.機器比對原稿 六. 防焊制作 1. 刪除工作稿M1及M4層中的資料 2.手動制作M1及M4 3.挑pad的狀態 4.挑ON PAD的狀態 5.削防焊PAD間的間距 6.削BGA pad的間距 7.防焊爆油的檢測 8.防焊VIA孔單面開窗的處理 9.比對原稿 10.總測 11.機器比對原稿 七. 擋點的制作 1.按要求挑擋點的狀態 2.削擋點的間距 3.擋點的檢測 4.檢查 八.文字制作 1.去除成型線以外的物件 2.查看文字的線寬是否在5mil以上,不足的要加寬至5MIL. 3.加大文字框 4.移文字,看是否有鏡象字體 5.用防焊反套文字 6.加廠內料號及UL MARK 7.比對原稿 8.總測 9.加模序號

第1章genesis2000 自动化程序编写和运行环境

本章内容主要介绍genesis自动化程序编写运行环境:首先对genesis2000软件进行简单的介绍;而后介绍genesis2000自动化程序的开发方式和开发语言;最后介绍自动化程序在软件中的接口。 1.1、 genesis2000软件简介: Genesis2000软件是由Orbotech与Valor的合资公司—Frontline公司开发的CAM系统,其目的是为实工程现制前自动化,为CAM处理提供最佳解决方案,由于该软件拥有很强大的功能,很多PCB生产公司都已使用它为CAM 制前服务,笔者认为该软件有以下几方面的优点: 1)令人喜欢的操作界面 genesis2000软件界面设计人性化,操作简单,易学。 2)用ODB++格式,使用ODB++格式有以下三个优点: (1):使设计和制造之间数据交换最优化。 (2):目前唯一性的可扩充的结构。 (3):更精确的数据描述。 3)强大的操作辅助指令 genesis2000软件的操作辅助指令可以简化很多复杂的工作,很简单的操作就可以达到我们想要的目的。 4)大的分析和优化功能 genesis2000软件的Analysis和DFM功能在精密度要求越来越高的PCB行业显得极为重要,它自动进行精密的分析和优化,而用手动操作根本不可能实现。 5)自动化程序开发 genesis2000软件的自动化程序可以让我们任何有规律的操作,有迹可寻的设定变成自动化,大大节省制作时间和减少人为误操作。 6)不断的围绕用户升级 genesis2000软件不断围绕用户的需求进行开发新的实用的功能,笔者在使用的几年间,genesis2000开发了很多新的功能。 1.2:genesis2000软件自动化程序开发方式和语言: 1.2.1genesis2000软件自动化程序的编写方式可分为以下三种: 1)scripts 2)hooks 3)forms and flows 1.2.2genesis2000软件自动化程序编写语言 genesis2000软件自动化程序编写语言可以用多种语言进行实现:如SH、CSH、BSH、KSH、TCL/TK、PERL/TK,等等,本书主要介绍CSH,和PERL/TK两种比较常用的编写语言。 1.3:genesis2000自动化程序的接口: 1.3.1:scripts程序接口: 1.3.1.1:scripts存放目录: 当我们安装完genesis后,无论您使用的是什么系统,都会存在genesis/sys/scripts这个路径,编写好的Sripts我们一般放在/gnesis/sys/scripts的目录下,这是genesis2000软件专门提供存放scripts 的地方,使用者也可以根据自己爱好存放在其它的地方,但建议存放在该目录下,操作起来比较方 便。 1.3.1.2:scripts菜单: 当我们进入genesis2000软件后,可以在任何一个界面找到file->script菜单,点击会在右边出现6个scripts的子菜单,其功能在下面进行详细解释,其界面如下图1.1所示:

ALTIBASE常用命令和脚本

ALTIBASE常用命令和脚本 1.一般应用命令 (1) 1.1.isql介绍 (1) 1.2.使用isql连接数据库 (2) 1.3.查看altibase数据库中所有的表 (2) 1.4.查看所有的sequence (2) 1.5.查看表结构和索引、主键 (2) 1.6.创建主键 (3) 1.7.查询数据的前N条 (3) 1.8.修改表结构 (3) 1.9.退出altibase的iSQL (3) 1.10.在shell脚本中使用isql命令 (3) 1.11.使用isql执行文件中的sql语句 (4) 1.12.导入导出数据 (4) 1.13.Perl中altibase的DBI的使用 (5) 2.管理类命令 (6) 2.1.查询当前占用或等待锁资源的操作 (6) 2.2.altibase锁的解锁办法 (6) 2.3.使用aexport进行数据备份和恢复 (6) 2.4.启停数据库使用server (7) 2.5.连接会话查询 (7) 2.6.关闭session (7) 2.7.查询SQL的执行时间 (7) 2.8.查询表占用空间大小 (8) 1.一般应用命令 1.1. isql介绍 Altibase使用ISQL连接数据库,默认连接方式为TCP/IP,isql的使用帮助如下:cxyt@ocstest[/home/cxyt]> isql -h ================================================================== === ISQL HELP Screen ================================================================== === Usage : isql [-h] [-s server_name] [-u user_name] [-p password] [-port port_no] [-silent] [-v]

个人整理shell脚本编程笔记

shell脚本编程学习笔记(一) 一、脚本格式 vim shell.sh #!/bin/bash//声明脚本解释器,这个‘#’号不是注释,其余是注释 #Program://程序内容说明 #History://时间和作者 二、shell变量的种类 用户自定义变量:由用户自己定义、修改和使用 与定义变量:Bash与定义的特殊变量,不能直接修改 位置变量:通过命令行给程序传递执行的参数 1、定义变量: 变量名要以英文字母或下划线开头,区分大小写。 格式:变量名=值 输出变量:echo $变量名 2、键盘输入为变量内容: 格式:read [-p "信息"] 变量名 如:read -p "pewase input your name:" name 3、不同引号对变量的作用 双引号"":可解析变量,$符号为变量前缀。 单引号'':不解析变量,$为普通字符。 反引号``:将命令执行的结果输出给变量。 三、shell条件测试 1、test命令: 用途:测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0,否则为其他数字。 格式:test 条件表达式[ 条件表达式] (注意:[]与表达式之间存在空格) 2、常见的测试类型: 测试文件状态 格式:[ 操作符文件或目录] 如:if [ -d /etc ] then echo "exists" else echo "not exists" fi 常见的测试操作符: -d:测试是否为目录 -e:测试目录或文件是否存在 -f:测试是否为文件 -r:测试当前用户是否有读权限 -w:测试当前用户是否有写权限 -x:测试当前用户是否有执行权限

Shell脚本的特殊符号

这篇文章主要介绍了shell脚本中常见的一些特殊符号和它的作用详解,总结的很简洁,容易看懂,需要的朋友可以参考下 在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我们编写的代码更加简洁和高效,这里给大家汇总下: 1、{} 大括号: 用法一:通配符扩展 eg: ls my_{finger,toe}s 这条命令相当于如下命令的组合: ls my_fingers my_toes eg: mkdir {userA,userB,userC}-{home,bin,data} 我们将得到userA-home, userA-bin, userA-data, userB-home, userB-bin,userB-data,use rC-home, userC-bin, userC-data,这几个目录。 用法二:可用于语句块的构造,语句之间用回车隔开。如果你想在某些使用单个语句的地方(比如在AND或OR列表中)使用多条语句,你可以把它们括在花括号{}中来构造一个语句块。 eg: { grep -v “$cdcatnum” $strack_file > $temp_file cat $temp_file > $strack_file echo cat -n file1 } (注:以上大括号中的四句命令够成了一个语句块) 用法三:参数扩展 ${name:-default} 使用一个默认值(一般是空值)来代替那些空的或者没有赋值的变量na me; ${name:=default}使用指定值来代替空的或者没有赋值的变量name; ${name:?message}如果变量为空或者未赋值,那么就会显示出错误信息并中止脚本的执行同时返回退出码1。 ${#name} 给出name的长度 ${name%word} 从name的尾部开始删除与word匹配的最小部分,然后返回剩余部分${name%%word} 从name的尾部开始删除与word匹配的最长部分,然后返回剩余部分${name#word} 从name的头部开始删除与word匹配的最小部分,然后返回剩余部分${name##word} 从name的头部开始删除与word匹配的最长部分,然后返回剩余部分

相关文档