genesis脚本编写10
Genesis之C-shell 脚本编写入门
.... else
.... fi 大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、 判断文件是否存在及是否可读等等... 通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的 空格。 [ -f "somefile" ] :判断是否是一个文件 [ -x "/bin/ls" ] :判断/bin/ls 是否存在并有可执行权限 [ -n "$var" ] :判断$var 变量是否有值 [ "$a" = "$b" ] :判断$a 和$b 是否相等
#!/bin/sh # The ticks are backticks (`) not normal quotes ('): tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`
3) 流程控制
"if" 表达式 如果条件为真则执行 then 后面的部分: if ....; then
file lf.gz
这将返回:
lf.gz: gzip compressed data, deflated, original filename, last modified: Mon Aug 27 23:09:18 2001, os: Unix
我们利用这一点写了一个叫做 smartzip 的脚本,该脚本可以自动解压 bzip2, gzip 和 zip 类型的压缩文件:
该脚本首先判断 mailfolder 是否可读。如果可读则打印该文件中的 "From" 一行。如果不可读则或操作生效,打印错误信息后脚本退出。这里有个 问题,那就是我们必须有两个命令:
genesis2024脚本编程培训教程
变量、数据类型与运算符
运算符 运算符用于执行各种算术和逻辑操作,如加法、减法、乘法、除法、比较等。
Genesis2024提供了丰富的运算符,可以满足各种复杂的计算需求。
03
流程控制语句与函数
条件判断语句
01
if语句
善于利用Genesis2024提供的调试工具 ,定位和解决代码中的错误。
变量、数据类型与运算符
变量
变量是用于存储数据的标识符,可以根据需要定义不同类型的变量。
在Genesis2024中,变量命名应遵循一定的规则,如使用字母、数字和下划线组合 ,且不能以数字开头。
变量、数据类型与运算符
数据类型
Genesis2024支持多种数据类型,包括整数、浮点数、字符串、布尔值 等。
拓展应用:结合其他工具提升效率
与版本控制工具集成
介绍如何将脚本编程与版本控制工具(如Git)结合使用,实现代码的版本管理和协作开 发。
与持续集成/持续部署工具集成
讲解如何将脚本编程与持续集成/持续部署工具(如Jenkins)结合使用,实现自动化构建 、测试和部署等。
与自动化运维工具集成
探讨如何将脚本编程与自动化运维工具(如Ansible)结合使用,实现系统的自动化配置 、管理和监控等。
脚本。
编写脚本文件
使用文本编辑器编写脚本文件,并 保存为以解释器对应的扩展名结尾 的文件,如.sh、.py、.pl或.rb等。
运行脚本
在命令行中通过解释器运行脚本文 件,如`bash script.sh`、`python script.py`、`perl script.pl`或`ruby script.rb`等。
genesis软件操作教程
新增
Close: 關閉視窗 Apply: 執行功能 Ok: 執行功能後關閉視窗
新增資料的名稱 資料種類
複製
資料種類
來源料號及實體 目的料號及實體
更改名稱
實體名稱 新名稱
匯出料號
資料格式為 ODB++ (Open DataBase)
料號名稱 儲存路徑 模式: Tar gzip (.tgz): 收集成檔案並壓縮 Tar: 收集成檔案 Directory: 目錄 XML: 可擴展標記語言 (ODBX) (Extensible Markup Language) 覆蓋重寫
屬性的定義: 1. 系統 (System) 2. 使用者 (User)
層別屬性
選項
視窗
參考 Engineering Toolkit 的視窗功能
使用Matrix程序
檢視圖形 更改層名 執行 Re-arrange rows
1. 設定層別用途 2. 設定層別種類 3. 設定層別極性 4. 設定層別順序 定義鑽孔層及成型層貫穿的層次 (Span Bar)
許可權 1
使用, 目前使用中的許可權 安裝, 安裝在系統上的許可權
許可權 2
選項
使用者
<user>@<computer>.<display>
電腦名稱 Genesis 使用者名稱 X window 顯示名稱
許可權 3
選項
等級
期限
最多 安裝數
最多 場合數
視窗
開啟輸入視窗
回到 Engineering Toolkit 開啟輸出視窗
Engineering Toolkit 工程工具組
滑鼠的按鍵功能
左鍵 [M1] 選擇 確定 執行
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"breakswcase orange:echo "orange"breakswcase green:echo "green"breakswdefault: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"breakswcase 5.3:echo "run the setup of $VER"breakswcase 5.*:echo "like 5.x"breakswcase 4.*:echo "like 4.x"breakswdefault:echo "no idea"endsw-------------------------------------------------------------------- 3. if 的语法,比较数字set n1 = 1set n2 = 2if ($n1 == $n2) thenecho "$n1 Equal $n2"elseecho "$n1 Not Equal $n2"endif-------------------------------------------------------------------- 4. if 的语法,比较字串set n1 = abcdefset n2 = abcdeif ($n1 == $n2) thenecho "$n1 Equal $n2"elseecho "$n1 Not Equal $n2"endif-------------------------------------------------------------------- 5. if 的语法,比较相似的字串set n1 = abcdefset n2 = abcdeif ($n1 =~ $n2) thenecho "$n1 Like $n2"elseecho "$n1 Not Like $n2"endif-------------------------------------------------------------------- 6. if 的语法,比较数字的大小set n1 = 1set n2 = 2if ($n1 > $n2) thenecho "$n1 > $n2"elseecho "$n1 < $n2"endif-------------------------------------------------------------------- 7. 每分钟执行一次的程式# mm 等于当天时间的【分钟】数set mm = `date | cut -d' ' -f4 | cut -d: -f2`if ( -r $0.out ) thenrm $0.outtouch $0.outelsetouch $0.outendifwhile ( $mm <= 16 )set mm = `date | cut -d' ' -f4 | cut -d: -f2`echo "$mm now is `date`"sleep 60#echo "$mm now is `date`" >> $0.outendecho "Over" >> $0.out-------------------------------------------------------------------- 8. 一个回圈的范例,并且利用expr 去作加的动作回圈的语法如下:foreach number (1 2 3)echo $numberendset counter = 0while ($counter <= 10)echo "sleeping for 5 seconds"sleep 5counter = `expr $counter + 1 `end-------------------------------------------------------------------- 9. 设定一个用当天月份与日期作为档案名称的程式如今天是10/02 , 则$prefix 会等于该程式+ 1002date.csh1002set prefix = `basename $0``date '+ %m%d'`echo $0echo $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' ) thenecho ", pass $file"else# 先找出该档案的第一次出现font 的行数,如果3,则$cmd = 3dset cmd = `grep -n font $file | cut -d: -f1 | head -1`d# 利用sed 去执行删除的动作,并把结果输出到${file}1sed $cmd $file > ${file}1# 如果${file}1 没有资料,则passingif ( -z ${file}1 ) thenecho " , ${file}1 is zero"elsecp ${file}1 $filerm {$file}1echo " , $file remove ok"endifendifend# 后来看过sed 的更进一步用法,发现先前写的太笨了,试试这个# sed /font/d $file > ${file}1# 一次OK, 我真是大笨蛋--------------------------------------------------------------------11. 功能:将指定的档案中,出现第一次【回】的那一行,加上<title> xxxx </title>foreach file (sky*.html)set filetitle = ftitle# 主要部份为sed 部份s/^ *// 表示将该行第一个字元前的空白删除echo "<title>`grep 回$file | head -1 | sed -e 's/^ *//'`</title>" > $ftitle# 将刚刚那一行,再插回去head -1 $file > ${file}headsed 1d $file > ${file}1cat $ftitle >> ${file}headcat ${file}1 >> ${file}headcp ${file}head $filerm ${file}1rm $ftitlerm ${file}headecho "$file ok"end--------------------------------------------------------------------12. 一个实际建立一个ftp server 的程式里面包括许多应用,相当有参考价值( 未完成)set path = ( /usr/bin /usr/sbin )#set true = `grep -c ftp /etc/passwd`if ( $true == 0 ) thenecho "no ftp user in your system"echo -n "do you want to create the ftp user? "set answer = $<if ($answer == 'y' || $answer == 'Y') thenset maxid = `sort /etc/passwd | tail -1 | cut -d: -f3`echo $maxidset newid = `expr $maxid + 1`echo $newidecho "/usr/sbin/useradd -d /home1/ftp -u $newid -s /etc/false ftp"endifelseecho "Good. Your system already has the ftp user. "set ftphome = `grep ftp: /etc/passwd | cut -d: -f6`echo $ftphomeendifif ( -z $ftphome ) thenecho "ftphome must be non-null"exit 2endifif ( $ftphome == "/usr" || $ftphome == "/" ) then echo "ftphome can't be / or /usr"exit 2endif# create the ftp home directoryif ( ! -d $ftphome ) thenecho "mkdir $ftphome"endifecho "Setting up the ftphome for SunOS `uname -r`"if ( ! -d $ftphome ) thenecho "mkdir -p $ftphome/usr/bin"endifcp /bin/ls $ftphome/usr/binchmod 111 $ftphome/usr/bin/lschown root $ftphome/usr/binchmod 555 $ftphome/usr/binif ( -r $ftphome/bin ) thenmv -f $ftphome/bin $ftphome/Obinendifln -s usr/bin $ftphome-------------------------------------------------------------------- 13. 取得该使用者的UIDif ( $#argv == 0 ) thenecho "$0 usage: $1 username"exit 2endifset uid = `grep $1 /etc/passwd | cut -d: -f3`echo $uid-------------------------------------------------------------------- 14. 将指定档案内的html 取代成htmforeach file ( *.html )echo "Processing $file ..."sed s/html/htm/ $file > ${file}1cp ${file}1 $filerm ${file}1end--------------------------------------------------------------------15. 一个简简单单的范例,看看就好#!/bin/csh -fecho .................echo WELCOME to \* TAPE COPY \*echo .................echo Enter your name:# $< can read from stand inputset name = $<echo " "echo Hi $name \!set D = `date`echo Today\'s date is $D[1] $D[2] $D[3]if ($D[1] == Mon) thenecho -------------------------------------------------------------echo Today is $D[1]day $name, it\'s time to copy your directorys\!echo -------------------------------------------------------------elseecho -------------------------------------------------------------echo Today is $D[1]day $name, no tape copies today\!echo -------------------------------------------------------------endif--------------------------------------------------------------------16. 一个finger 的程式set FINGER = "/usr/ucb/finger"if ( -x $FINGER ) thenif ( $#argv == 0 ) thencat << TAG---------------------------------Hahahah ....---------------------------------TAGelse$FINGER "$*"endifelseecho "Cannot find finger on this system."endif--------------------------------------------------------------------17. 取得变数的方法set W = `who -r`echo $W[9]--------------------------------------------------------------------18. 更改档案名称,将*.html --> *.htm# rename *.html to *.htmecho -n "This will change *.html to *.htm. Can I continue ? (y/n) : " set input = $<if ( $input != "y" && $input != "Y" ) thenecho "Ok. Quit..."exit 2endifforeach file ( *.html )echo "Processing $file to `basename $file .html`.htm "mv $file `basename $file .html`.htmend--------------------------------------------------------------------19. 更改档案名称,将*.htm --> *.htmlecho -n "This will change *.htm to *.html. Can I continue ? (y/n) : " set input = $<if ( $input != "y" && $input != "Y" ) thenecho "Ok. Quit..."exit 2endif# rename *.htm to *.htmlforeach file ( *.htm )echo "Processing $file to `basename $file .htm`.html "mv $file `basename $file .htm`.htmlend-------------------------------------------------------------------- 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</P< p>。
genesis2000脚本运行调试
20
COM
COM: 執行命令列指令 (line mode command) 語法: COM command,arg1=val1,arg2=val2… 傳回值: $COMANS 傳回視窗號碼 $STATUS 執行結果 0 表示成功; 其它表錯誤碼 範例:
COM open_job,job=$MyJob 命令列指令請參考: 0206.pdf
字型 粗細 (黑體, 適中) 字體 (一般, 斜體) 請參考: 0203.pdf 第五章
15
GUI command 2
LABEL text 產生標籤; 前置字元 „@‟ 可以顯示圖檔 (xbm, xpm) CLABEL 設定在 ‘Close‟ 按鍵上的標籤; 內定是 CLOSE AND CONTINUE. TEXT name [len] title 產生一個輸入文字欄 name: 識別及變數名稱 len: 提示字元的長度 (內定是 20) title: 提示字元, 若為字串則需加上 ‘ ’,前置字元 „@‟ 可以顯示圖 檔 DTEXT name text 設定 TEXT 的預設字串 name: 變數名稱, 與 TEXT 相同 text: 顯示的字串
GUI command 4
LIST name visnum S/M start 產生卷軸式選單, 用 END 結束 name: 識別及變數名稱 visnum: 可看視的項目數量 S/M: 單選或複選 start: 從第幾列開始顯示 END 結束指令, 結束 radio, option, list 或整個 GUI 檔案 BW width 設定邊緣寬度 (1~10)
24
info command 4
-d data_type 資料種類, 預設是所有的資料種類 ‘exists‟ 是特殊種類, 可以檢測實體是否存在 ‘ERF‟ 可以取得 erf 內的參數 „MEAS‟ 可以取得 severity level 的資料 -p parameters 設定特定資料種類的部份參數 以 ‘+’ 字元作為分隔
genesis标注脚本perl源码
第三段编写:
####Line2 $xs=$x1+$d1/1000/2; $xe=$x1+$len; $ys=$y1; $ye=$y1;
$f->COM("add_line,attributes=no,xs=$xs,ys=$ys,xe=$xe,\ ye=$ye,symbol=r$d,polarity=positive,bus_num_lines=0,bus_dist_by=pitch,\ bus_distance=0,bus_reference=left");
}
$f->VOF; $f->COM("get_message_bar");
my ($x1,$y1,$d1); my $readbar = $f->{COMANS};
my @msgbar=split(',',$readbar); foreach my $tmp(@msgbar){
if ($tmp=~ /X=/){ $x1=substr($tmp,2,length($tmp));
genesis标注脚本perl源码
第一段编写:
#!/usr/bin/perl use strict; use lib "$ENV{GENESIS_DIR}/e$ENV{GENESIS_VER}/all/perl"; use Genesis; use encoding "utf8"; our $f=Genesis->new; our $JOB=$ENV{JOB}; our $STEP=$ENV{STEP}; our $GENESIS_DIR=$ENV{GENESIS_DIR}; our $GENESIS_VER=$ENV{GENESIS_VER}; $f->COM("units,type=mm");
2024年GENESIS培训教程
GENESIS培训教程一、引言GENESIS(GeneralNeuralSimulationSystem)是一款功能强大的神经网络模拟软件,由美国加州大学圣地亚哥分校开发。
作为一款优秀的神经科学工具,GENESIS已被广泛应用于神经网络建模、仿真及分析等领域。
本文旨在为初学者提供一份全面、系统的GENESIS培训教程,帮助读者快速掌握GENESIS的基本操作和高级功能。
二、GENESIS安装与配置1.安装GENESIS2.配置环境变量为了方便在命令行中运行GENESIS,需要将其安装路径添加到系统环境变量中。
具体操作如下:(1)右键“我的电脑”或“此电脑”,选择“属性”;(2)“高级系统设置”,在“系统属性”窗口中“环境变量”;(3)在“系统变量”区域找到变量名为“Path”的变量,“编辑”;(4)在变量值的最前面添加GENESIS安装路径,用分号隔开,例如:“C:\GENESIS\genesis-2.4\bin;”;(5)“确定”保存设置,并重启计算机使设置生效。
三、GENESIS基本操作1.创建神经网络模型(1)打开GENESIS命令行界面;(2)输入命令“genesis”,启动GENESIS;(3)在GENESIS命令行界面中,输入命令“createneutral/cell”创建一个名为“cell”的神经网络模型;(4)在“cell”模型中,可以创建神经元、突触等组件,并设置其属性。
2.编写神经网络仿真脚本(1)在GENESIS命令行界面中,输入命令“edit”打开文本编辑器;(2)编写神经网络仿真脚本,包括创建神经元、突触、设置参数、运行仿真等;(3)保存脚本,退出文本编辑器。
3.运行神经网络仿真(1)在GENESIS命令行界面中,输入命令“Genesis-batchscript.g”运行名为“script.g”的仿真脚本;(2)仿真过程中,可以在命令行界面查看输出信息;(3)仿真结束后,可以在GENESIS图形界面中查看仿真结果。
GENESIS脚本编程教材PERL
\l Force next character to lowercase
\U Force all following characters to uppercase
\L Force all following characters to lowercase
2.6.2 创建引用... 12
2.6.3 使用引用... 13
2.6.4 符号引用... 14
2.6.5 垃圾回收与弱引用... 15
2.7
数据结构... 16
2.7.1 Arrays of Arrays 16
2.7.2 Hash of Arrays 18
2.7.3 Arrays of Hashes 20
其不足是:
l
动态类型语言,不是很可靠
l
自然语言,是优点也是缺陷,使得 Perl 语言代码可能晦涩难懂;
l
智能语言,是优点也产生不足:根据上下文解释编程者之意,可能产生臆断;也
因此产生种种编程陷阱。
l
不是很优美。多种方法做事,有时会让编程者无所适从。
l
性能问题。Perl 灵活的数据结构和处理性能通常不是很高(相对 C/C++),若需要
l
文件句柄(Filehandle)指给一个文件、设备、Socket 或管道的名称。
l
子程序相对其它类型是动词(其余为名词),较为特别,将用特别的一章详细说
明
命名空间(Namespaces) Perl 有两种命名空间,分别是符号表(symbol tables,也称为包(package))和词汇范围(lexical scopes,可以理解为局部空间)。符号表是存储全局变量的全局关联数组(包括存储其它关 联数组),词汇范围是无名的空间,不存在于任何符号表中,而是与你程序中的一段代码块 相关联。它们包含只对该代码块可见的变量。以 our 定义的变量存在符号表中,又称为全局
genesis脚本实施方案
genesis脚本实施方案Genesis脚本实施方案为了更好地实施Genesis脚本,我们需要制定一个详细的实施方案,以确保项目顺利进行并取得成功。
本文档将详细介绍Genesis脚本的实施方案,包括目标、步骤和关键注意事项。
1. 目标我们实施Genesis脚本的主要目标是提高系统的效率和稳定性,减少手动操作,降低人为错误的发生率。
通过Genesis脚本的实施,我们希望能够实现自动化部署、监控和故障排除,提高系统的可靠性和安全性。
2. 实施步骤(1)需求分析:首先,我们需要对系统的需求进行分析,确定Genesis脚本的具体功能和实施范围。
在这一阶段,我们需要与相关部门和人员充分沟通,了解他们的需求和期望,以便为实施方案的制定提供参考。
(2)技术评估:在确定了需求后,我们需要对系统的技术架构和环境进行评估,确保Genesis脚本可以与现有系统无缝集成。
同时,我们还需要评估团队的技术能力和资源情况,确保实施过程中能够得到充分的支持和配合。
(3)制定计划:在完成需求分析和技术评估后,我们需要制定详细的实施计划,包括时间安排、人员配置、风险评估和质量控制等方面。
在制定计划时,我们需要充分考虑各种可能的情况,确保实施过程中能够及时调整和应对。
(4)实施和测试:实施阶段是Genesis脚本实施方案的关键阶段,我们需要按照计划逐步推进,确保每个环节都得到充分的测试和验证。
在实施过程中,我们需要严格遵循规范和流程,确保系统的稳定性和安全性。
(5)培训和支持:在完成实施后,我们需要对相关人员进行培训,确保他们能够熟练操作和维护Genesis脚本。
同时,我们还需要提供充分的支持和帮助,确保系统能够稳定运行并发挥最大的效益。
3. 关键注意事项在实施Genesis脚本的过程中,我们需要特别注意以下几个方面:(1)风险管理:实施过程中可能会出现各种风险,我们需要及时评估和应对,确保项目不受影响。
(2)沟通协调:实施过程需要各个部门和人员的密切配合,我们需要加强沟通和协调,确保项目顺利进行。
genesis script gui
GUI 指令 vs. 图示元件
字型 颜色
tbi18 FONT tbi18
BG 008800
RGB
FG 000055
~/command_file
GUI 指令 vs. 图示元件
List(选单) List(选单) 选单 LIST JOBS 5 M 1
0527 0527new 0527new ........ Yt 复(M),单(S)选 单 选
不执行该行只将指标移至下一行 skip the line and go to the next
执行该行并将指标移至下一行 execute the line then go to the next
检测子程式 sub-script testing
相同, 与"Next"相同 但可切入子程式 相同 逐行测试 like "Next", but can go into the sub-script then test one by one
对应快速键 hot-key binding
请在适当环境下按 "Binding" " Press "Binding" under sutiable condition "
对应快速键 hot-key binding
1. 选择可用按键 select hot-key 2. 选出程式名称 select script name 3. 按 "add"完成设定 完成设定 press "add to complete
5. COM
执行命令列指令 用法 : COM command,arg1=val1,arg2=val2… 传回值: 传回值 $COMANS - 传回视窗号码 $STATUS - 0 表示成功 其他表错误码 表示成功,
genesis教程-10锣带制作
PCB技术群:群号9076912锣带制作一般流程创建外围Æ整理外围线--Æ层别特性转换--Æ确认及标示尺寸Æ刀具及切割路线设定Æ锣带文件输出操作详解1,创建外围如已有外围则不用再建尽量选择外框接触物件不多的层Æ选中外框ÆEditÆCopyÆ Other LayerÆ取名为Rout Æ其他参数都不用设置点OKÆ把Rout层中多余的不属于外围的物件删除掉2, 整理外围线将接合不佳处重新接合,并以ARC取代线段,组成圆弧。
A> EditÆReshapeÆDesign To Rout最大分析缺口最大接合缺口平滑偏移误差B>RoutÆConnection或EditÆConnections 快捷键 Alt__O选取圆弧模式选取导角模式R角(半径)角度3,层别特性转换进入Job Matrix ,将rout层定义属性(Board;Rout;Positive)4,确认及标示尺寸RoutÆDimensions部分选择显示指定起点指定终点All 任意点Ps 起点Pe 终点可平移终点边线于指定位置调整标示位置注意:不可重复标示同一终点线段。
5,刀具及切割路线设定 RoutÆChains切 路 ,锣带的层名添加(修改,删除,合并,优化,加导引孔)等操作刀具大小左右补偿(一般都用右补偿)Router机台速度产生的Chain记录列表Chain [t ∫ein ] 电路;链路, 理,.6,锣带文件输出ActionsÆAuto Rout Manager切换到Engineering Toolkit窗口,才能调出自动锣带管理器,跟Auto Drill Manager操作类似。
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"breakswcase orange:echo "orange"breakswcase green:echo "green"breakswdefault:echo "you input $STOPLIGHT"endsw2. 利用set 来取得变数,set ABC = "I am ABC"也可以利用`command` 来取得命令且外,case 也可以用万用字元* 来代替set VER = `uname -r`switch ($VER)case 5.5:echo "run the setup of $VER"breakswcase 5.3:echo "run the setup of $VER"breakswcase 5.*:echo "like 5.x"breakswcase 4.*:echo "like 4.x"breakswdefault:echo "no idea"endsw3. if 的语法,比较数字set n1 = 1set n2 = 2if ($n1 == $n2) thenecho "$n1 Equal $n2"elseecho "$n1 Not Equal $n2"endif4. if 的语法,比较字串set n1 = abcdefset n2 = abcdeif ($n1 == $n2) thenecho "$n1 Equal $n2"elseecho "$n1 Not Equal $n2"endif5. if 的语法,比较相似的字串set n1 = abcdefset n2 = abcdeif ($n1 =~ $n2) thenecho "$n1 Like $n2"elseecho "$n1 Not Like $n2"endif6. if 的语法,比较数字的大小set n1 = 1set n2 = 2if ($n1 > $n2) thenecho "$n1 > $n2"elseecho "$n1 < $n2"endif7. 每分钟执行一次的程式# mm 等于当天时间的【分钟】数set mm = `date | cut -d' ' -f4 | cut -d: -f2`if ( -r $0.out ) thenrm $0.outtouch $0.outelsetouch $0.outendifwhile ( $mm <= 16 )set mm = `date | cut -d' ' -f4 | cut -d: -f2` echo "$mm now is `date`"sleep 60#echo "$mm now is `date`" >> $0.outendecho "Over" >> $0.out8. 一个回圈的范例,并且利用expr 去作加的动作回圈的语法如下:foreach number (1 2 3)echo $numberendset counter = 0while ($counter <= 10)echo "sleeping for 5 seconds"sleep 5counter = `expr $counter + 1 `end9. 设定一个用当天月份与日期作为档案名称的程式如今天是10/02 , 则$prefix 会等于该程式+ 1002date.csh1002set prefix = `basename $0``date '+ %m%d'`echo $0echo $prefix10. 移除在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' ) thenecho ", pass $file"else# 先找出该档案的第一次出现font 的行数,如果3,则$cmd = 3d set cmd = `grep -n font $file | cut -d: -f1 | head -1`d# 利用sed 去执行删除的动作,并把结果输出到${file}1sed $cmd $file > ${file}1# 如果${file}1 没有资料,则passingif ( -z ${file}1 ) thenecho " , ${file}1 is zero"elsecp ${file}1 $filerm {$file}1echo " , $file remove ok"endifendifend# 后来看过sed 的更进一步用法,发现先前写的太笨了,试试这个# sed /font/d $file > ${file}1# 一次OK, 我真是大笨蛋11. 功能:将指定的档案中,出现第一次【回】的那一行,加上<title> xxxx </title>foreach file (sky*.html)set filetitle = ftitle# 主要部份为sed 部份s/^ *// 表示将该行第一个字元前的空白删除echo "<title>`grep 回$file | head -1 | sed -e 's/^ *//'`</title>" > $ftitle# 将刚刚那一行,再插回去head -1 $file > ${file}headsed 1d $file > ${file}1cat $ftitle >> ${file}headcat ${file}1 >> ${file}headcp ${file}head $filerm ${file}1rm $ftitlerm ${file}headecho "$file ok"end12. 一个实际建立一个ftp server 的程式里面包括许多应用,相当有参考价值( 未完成)set path = ( /usr/bin /usr/sbin )#set true = `grep -c ftp /etc/passwd`if ( $true == 0 ) thenecho "no ftp user in your system"echo -n "do you want to create the ftp user? "set answer = $<if ($answer == 'y' || $answer == 'Y') thenset maxid = `sort /etc/passwd | tail -1 | cut -d: -f3`echo $maxidset newid = `expr $maxid + 1`echo $newidecho "/usr/sbin/useradd -d /home1/ftp -u $newid -s /etc/false ftp"endifelseecho "Good. Your system already has the ftp user. "set ftphome = `grep ftp: /etc/passwd | cut -d: -f6`echo $ftphomeendifif ( -z $ftphome ) thenecho "ftphome must be non-null"exit 2endifif ( $ftphome == "/usr" || $ftphome == "/" ) then echo "ftphome can't be / or /usr"exit 2endif# create the ftp home directoryif ( ! -d $ftphome ) thenecho "mkdir $ftphome"endifecho "Setting up the ftphome for SunOS `uname -r`"if ( ! -d $ftphome ) thenecho "mkdir -p $ftphome/usr/bin"endifcp /bin/ls $ftphome/usr/binchmod 111 $ftphome/usr/bin/lschown root $ftphome/usr/binchmod 555 $ftphome/usr/binif ( -r $ftphome/bin ) thenmv -f $ftphome/bin $ftphome/Obinendifln -s usr/bin $ftphome13. 取得该使用者的UIDif ( $#argv == 0 ) thenecho "$0 usage: $1 username"exit 2endifset uid = `grep $1 /etc/passwd | cut -d: -f3`echo $uid14. 将指定档案内的html 取代成htmforeach file ( *.html )echo "Processing $file ..."sed s/html/htm/ $file > ${file}1cp ${file}1 $filerm ${file}1end15. 一个简简单单的范例,看看就好#!/bin/csh -fecho .................echo WELCOME to \* TAPE COPY \*echo .................echo Enter your name:# $< can read from stand inputset name = $<echo " "echo Hi $name \!set D = `date`echo Today\'s date is $D[1] $D[2] $D[3]if ($D[1] == Mon) thenecho -------------------------------------------------------------echo Today is $D[1]day $name, it\'s time to copy your directorys\!echo -------------------------------------------------------------elseecho -------------------------------------------------------------echo Today is $D[1]day $name, no tape copies today\!echo -------------------------------------------------------------endif16. 一个finger 的程式set FINGER = "/usr/ucb/finger"if ( -x $FINGER ) thenif ( $#argv == 0 ) thencat << TAG---------------------------------Hahahah ....---------------------------------TAGelse$FINGER "$*"endifelseecho "Cannot find finger on this system."endif17. 取得变数的方法set W = `who -r`echo $W[9]18. 更改档案名称,将*.html --> *.htm# rename *.html to *.htmecho -n "This will change *.html to *.htm. Can I continue ? (y/n) : " set input = $<if ( $input != "y" && $input != "Y" ) thenecho "Ok. Quit..."exit 2endifforeach file ( *.html )echo "Processing $file to `basename $file .html`.htm "mv $file `basename $file .html`.htmend--------------------------------------------------------------------19. 更改档案名称,将*.htm --> *.htmlecho -n "This will change *.htm to *.html. Can I continue ? (y/n) : " set input = $<if ( $input != "y" && $input != "Y" ) thenecho "Ok. Quit..."exit 2endif# rename *.htm to *.htmlforeach file ( *.htm )echo "Processing $file to `basename $file .htm`.html "mv $file `basename $file .htm`.htmlend20. 将大写的档名改成小写的档名tr string1 string2 会将standard input 的字串,所对应到的string1, 都以string2 取代foreach file ( * )mv $file `echo $file | tr '[A-Z]' '[a-z]'`end21. 将小写的档名改成大写的档名foreach file (*)mv $file `echo $file | tr '[a-z]' '[A-Z]'`end。
GENESIS全套资料制作流程
此红色框即为选中
修改前Step名 修改后Step名
在调入原稿后, 选择org按住鼠标中键拖动即Copy出一个+1Step(即 org+1),并改此Step名;改名方法是:选中要修改的Step点击File 菜单,在下拉菜单中选Rename…,便弹跳出红色箭头所标示的窗口, 在New name栏中填写pcs,注意要是小写。pcs即为CAM人员编辑 的Step,而org只保存原稿。
槽孔制作:方法(1)选中要做的槽孔,Edit-Reshape-Substitute…在Symbol栏中输入槽形状oval、槽X 方向的尺寸、槽Y方向的尺寸(注意单位),点击 自动抓图形的中心点,也可以点Datum抓图形的 中心定点(此种要配合锁点功能抓点),最后点击Apply。
槽宽(注意此处的单位为my)
执
点击此
行
栏
后
删除重孔:在DFM菜单下选红色框示中的命令出现此对话框,参数按上图调整。点击红色 框的指令,执行后 会有不同的颜色显示,需点击放大镜查看结果。(执行此命令后系 统会自动生成一层执行命令前未改变内容的层,后缀为+++)
工作层 参照层(线路或者原稿孔位图)
偏差?Mil以内自动对正 偏差?Mil以内报告出来
如果需修改的太多可重新调整一下优化参数。
翻转极性
此数据根据厂内制 程能力及流程而定
NPTH孔挖蚀刻圈:将NPTH孔Copy到线路层翻转极性为负性并加大单边8mil去削线路层。注 意不能削到线、弧、焊垫。保证削后孔的ring符合标准,不能断、短路。(NPTH孔蚀刻圈的大
小是根据制程及流程而决定的)
翻转极性 此数据是根据厂 内制程能力而来
线路参照防焊转Pad:在DFM菜单下Cleanup—Construct Pads (Auto.)会出现如上图的对话
用python wxPython编写Genesis Scripts
Genesis10.0安装教材
Genesis10.0安装教材
Genesis10_0安装教材
1. 双击弹出如下界面
2.
3. 注意安装序号,看清后面的路径是否正确,①原文件路径指的是你的安装源文件
4. 点②③④弹出什么只管双击确定就行了
5. 点读取安装包信息弹出下面对话框,直接点右边的:单机版
6 .弹出下面安装界面,请先选你要装到哪个盘里哪个目录里如下:
7.点第7 步复制程序文件,在所有弹出的对话框中点YES 或确定;最后点Genesis
8.点第8 设置文件属性
9.点第9 项,红色正常不用理会它,点确定就行了!
10 .点第10 项弹出对话框直接点YES —》YES —》
选16/32bit 再点,最后点11.点第11 项设置用户名和密码,在弹出的对话框中填入用户名和密码。
如下图
填好后点:确定
12.点第12 项:设置数据库位置,在弹出的对话框中点YES;再点弹出的对话框的中间:点我既可。
13.第13 步可以不点。
14.退出安装程序。
15.把文件夹中的文件目录整体拷贝到D:\genesis\sys 里面。
16.把文件拷贝到桌面。
17.重起动电脑。
双击桌面的便可起动Genesis 了。
此版本为稳定版虽然汉化了安装界面,但是内核是原装版没有任何改动;请放心使用。
perl编写genesis脚本
一perl是什么?二perl在哪里?三运行四注释一、Perl是什么?Perl是Practical Extraction and Report Language的缩写,它是由Larry Wall 设计的,并由他不断更新和保护,用于在UNIX环境下编程。
.Perl具有高级语言(如C)的壮大能力和灵活性。
事实上,你将看到,它的许多特性是从C语言中借用来的。
.与脚本语言一样,Perl不需要编译器和链接器来运行代码,你要做的只是写出程序并告知Perl来运行罢了。
这意味着Perl关于小的编程问题的快速解决方案和为大型事件创建原型来测试潜在的解决方案是十分理想的。
.Perl提供脚本语言(如sed和awk)的所有功能,还具有它们所不具有的很多功能。
Perl还支持sed到Perl及awd到Perl的翻译器。
简而言之,Perl象C一样壮大,象awk、sed等脚本描述语言一样方便。
二、Perl在哪里?Perl通常位于/usr/local/bin/perl或/usr/bin/perl中。
你能够在Internet用匿名FTP免费取得它,如{{ftp:///pub/gnu/perl-5.004.tar.gz}}。
安装进程为:(1)解压:$gunzip perl-5.004.tar.gz$tar xvf - <perl-5.004.tar.gz(2)编译:$make makefile(3)放置:将编译生成的可执行文件拷贝到可执行文件通常所在目录,如:$copy <compiled excutable file> /usr/local/bin/perl注:这需要系统治理员权限。
三、运行用文本编辑器编辑好你的Perl程序,加上可执行属性:$chmod +x <program>就能够够执行了:$./<program>。
若是系统提示:"/usr/local/bin/perl not found",那么说明你没有安装成功,请从头安装。
用python wxPython编写Genesis Scripts
genesis全套最快速制作操作步骤
D e s i g n e r B y:A n j i eDate:2015-09-09资料整理1.检查整理资料(解压缩.zip,打印客户PDF等资料).2.INPUT资料(注意钻孔D-CODE属性设置)3.更改层命名,定义层属性及排序.4.层对齐及归原点(最左下角).5.存ORG.整理原始网络6.钻孔核对分孔图(MAP)7.挑选成型线至outline层8.工作层outline层移到0层.9.整理钻孔(例如:将大于6.4mm钻孔移动到outline层, 其它层NPTH,SLOT移动到DRL层)10.整理成型线(断线、缺口、R8)11.整理outline(将outline层需要钻孔的移动到drl层)12.创建Profile.13.板外物移动到0层.14.核对0层成型线及板外物是否移除正确.15.内层网络检查(如负性假性隔离)16.防焊转PAD17.线路转PAD18.分析钻孔(检查线路PAD是否有漏孔、重孔修正,内层short)19.定义SMD属性20.存NET21.打印原稿图纸.编辑钻孔22.补偿钻孔(1)检查原始孔径是否正确(不能有“?”号)(2)合刀排序(3)输入板厚与补偿值(PTH+4 /PTH+6)(4)定义钻孔属性(VIA,PTH,NPTH)主要定义VIA属性NPTH在整理原始网络前定义.(5)输入公差(注意单位).(6)检查最大与最小孔是否符合规范(7)短SLOT孔分刀,8字孔分刀。
(尾数+1 或-1)23.校对钻孔中心(参照TOP防焊及TOP线路)24.分析钻孔25.短SLOT孔加预钻孔26.挑选NPTH属性的孔移动到新建NPTH层.内层负片编辑1.检查有无负性物件(负性物件需要合并)2.层属性是否为NEG3.对齐钻孔(内层负片为影响层,参考钻孔层对齐)4.隔离线宽检查修正。
5.检查隔离PAD检查修正。
a.与原始孔径等大,要与客户确认。
b.比原始孔径小很多可删除,按导通制作。
6.成型线及NPTH隔离宽度检查修正(无成型线及NPTH隔离,需要自行添加)7.Thermal检查修正:a.内外径单边6mil以上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十章 awk 工具编程 我们在genesis 编程中,awk 工具会经常用到,awk 工具很强大,它不仅可以从一个很大的文本文件中抽取数据包,还可以进行算术运算、比较运算等等很多功能,应该说awk 是一种比较完整的编程语言,本章我们就一一介绍这个较为强大的工具。
刘才林数字签名人 刘才林DN :cn=刘才林,c=CN-中国,o=上海桌凯,ou=工程,email=hillohowareyougo@ 原因:我是该文档的作者日期: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:范例:●awk '/genesis/' /etc/passwd上面的程序在/etc/passwd中找寻符合genesis的记录,并显示出来,该例子中没有动作,所以缺省的动作被执行。
●awk '/genesis/{print $1}' 304.txt以上程序是在文件304.txt中查找包含genesis字符串的记录,并且打印这些记录的第一行。
10.5:运算符号:10.5.1:比较运算:下面我们先列出awk的比较运算符号:●== 相等●!= 不等于●< 小于●> 大于●<= 小于等于●>= 大于等于awk可以进行带有小数点的比较,下面我们举例说明:echo 2.3 3.2|awk ‘{if($1<$2)print 1;else print 2}’则结果会显示1。
10.5.2: 逻辑运算式:下面我们列出逻辑运算符号:●|| 逻辑或●&& 逻辑与●! 逻辑否10.5.3:正则表达式符号:●~ 匹配正则表达式。
●~! 不匹配正则表达式。
10.5.4:数值运算符号:●+ 加法运算●- 减法运算●* 乘法运算●/ 除法运算●% 求余数●= 赋值●^ 求幂●** 求幂●+= 将变量加一个数再将此值赋给变量●-= 将变量减一个数再将此值赋给变量●++ 将变量值加1●-- 将变量值减1●*= 将变量乘以一个数再将此值赋给变量●/= 将变量除以一个数再将此值赋给变量●%= 将变量求余后再将余数赋给变量●^= 将变量求幂后再将结果赋予给变量下面我们举例进行说明:(1): 将数值10进行3次立方:echo 10|awk ‘{print ($1^3)}’结果为1000(2):将数值5乘以3加上8:echo 5|awk ‘{print ($1*3+8)}’结果等于2310.6:记录、域:在awk中如果我们要对文本进行操作,就要特别注意记录、域的概念,下面我们分别进行讲述:10.6.1:记录:●awk把每一个以换行符结束的行称为一个记录。
●记录分隔符:默认的输入和输出的分隔符号都是回车,保存在内建变量ORS和RS中。
●$0变量:它指的是整条记录,如awk ‘{print $0}’ test将输出test文件中的所有记录。
●NR:行号:一个计数器,每处理完一条记录,NR就会加1,我们也可以固定打印某行的记录:如cat xx|awk -F '{if(NR==1)print $0}',则打印xx文件的第一行的记录。
10.6.2:域:● 记录中每个单词称为“域”,默认情况下以空格或tab分隔,awk可跟踪域的个数,并在内建变量NF中保存该值,如awk ‘{print $1,$5}’ test 则将打印test第一个和第三个空格分开的列。
● 域分隔符:内建变量FS保存输入域分隔符的值,默认是空格或TAB,我们可以通过-F命令行选项参数修改FS的值,如awk –F:‘{print $1,$5}’ test则将打印以冒号为分隔符的第一和第五列的内容。
● 可以同时使用多个域分隔符,这时应该把分隔符写成到方括号中,如awk –F‘[:\t]’’{print $1,$3}’ test’表示以空格、冒号和TAB作为分隔符。
10.7:正则表达式:在grep一章中,有许多例子用到正则表达式,这里将不使用同样的例子,但可以使用条件操作讲述awk中正则表达式的用法。
这里正则表达式用斜线括起来。
例如,在文本文件中查询字符串genesis,使用/genesis/可以查出单词genesis的出现情况。
10.7.1:元字符:awk的元字符包括下面一些符号:\ ^ $ . [] | () * + ?元字符的具体解释可以参照前面的章节,但其中有两个符号在前面没有提到,因为它们只适合与awk,它们为“+”和“?”●+ 使用匹配一个或者多个字符。
●?匹配模式出现的频率。
10.7.2:范例:●查找文件test中第一个字段为genesis的记录,并打印它们的整个行:cat test|awk –F’’’{if($1==”genesis”)print $0}’genesis 2 3genesis 3 5●查找文件scripts中第一个字段不为set的记录,并打印它们整个行:cat scripts|awk –F’’’{if($1!=”set”)print $0}’echo “$1”echo “this is value”●打印文件中所有以X或者Y开头的记录:$awk ‘/^(X|Y)/’ test●如果第一个域是一个数值,并等于100则打印这个记录:$awk ‘$1==100’test100 35 25100 X Y●打印第二个域的第5个字母为x的所有记录。
$awk ‘$2 ~/^...x/ testgenesis1 0005x002genesis2 0303x0325●打印第一个域为三个字母开头,就打印这个记录:$awk ‘$1~/^[a-z][a-z][a-z]/{print $1}’testabc00cds1210.8:变量:10.8.1:普通变量:在awk中,变量不需要进行定义而可以直接使用,变量类型可以是数字或字符串:赋值的格式为:variable=expression:请看下面的例子:$1 == "genesis" {value = value + 1 }如果第一个字段是genesis,则value的值加1。
在此之前,我们应当给value赋予过初值,一般是在GEGIN部分。
下面是比较完整的例子:BEGIN { value = 0 }$5 == "genesis" { value = value + 1 }END { printf "%d occurrences of genesis were found",value }变量可以和字段和数值一起使用,所以,下面的表达式均为合法:value = value + $6value = value * 3value+=3value = $5 - 8value*=3变量也可以是格式的一部分,例如:$1 > max_value {print "this max value exceeded by ",$1 - max_value}$3 - var1 < min_value {print "this Illegal value of ",$3 }10.8.2:环境变量:awk的环境变量比较多,下面我们先描述它们各自的功能:●$n 当前记录的第n个字段●$0 完整的当前记录●ARGC 命令行参数的数目●ARGIND 命令行中当前文件的位置●ARGV 包含命令行参数的数组●CONVFMT 数字转换格式(默认为%g)●ENVIRON 环境变量关联数组●ERRNO 最后一个系统错误●FIELDWIDTHS 字段宽度列表●FILENAME 当前文件名●FNR 同NR,但相对于当前文件●FS 字段分割符号,默认为空格●IGNORECASE 如果为真,则进行忽略大小写匹配●NF 当前记录中的字段数●NR 当前记录数●OFMT 数字的输出格式(默认值是%g)●OFS 输出字段分隔符(默认值是空格)●ORS 输出记录分隔符(默认是一个换行符)●RLENGTH 由match函数所匹配的字符串长度●RS 记录分隔符号(默认为一个换行符号)●RSTART 由match函数所匹配的字符串的第一个位置●SUBSEP 数组下标分隔符(默认值是\034)10.9:BEGIN和ENDBEGIN和END两个模块在awk中非常有用,下面我们对它们进行详细介绍:10.9.1:BEGIN模块:BEGIN模块后面紧紧跟着动作块,它可以在没有任何输入的情况下进行测试,它通常用来初始化数值,设置参数等等,如:awk 'BEGIN{FS=","; OFS="\t"; ORS="\n\n"}{print $1,$2,$3} test。