新人心得,不喜勿喷
genesis2000吧
全部回复
仅看楼主
level 3
aptx1987 楼主
仔细研究Genesis2000的帮助文档,发现run_script的时候,软件会先运行scr_start.csh(/genesis/exx/all/)脚本。
所以研究了一下,想搞清楚为什么部分windows系统直接run_script执行perl脚本的时候为什么执行失败。
原先的代码中,
set _HEAD = `(sed -n 1p $PROG)`
if("$_HEAD" =~ *perl*)then
echo "Executing Perl Program $PROG $argv"
perl $PROG $argv
set PROG_STATUS=$status
else if("$_HEAD" =~ *python*)then
echo "Executing Python Program $PROG $argv"
python $PROG $argv
set PROG_STATUS=$status
else if("$_HEAD" =~ *wish*)then
setenv TCSHONLYSTARTEXES 1
echo "Executing TCL Program $PROG $argv"
$_genesis_root/sys/hooks/wish_start.tcl $PROG $argv
set PROG_STATUS=$status
else if("$PROG" =~ *.pl)then
echo "Executing Perl Program $PROG $argv"
perl $PROG $argv
set PROG_STATUS=$status
else
echo "Executing C Shell Program $PROG"
source $PROG
set PROG_STATUS=$status
endif
语句中使用了sed命令,获取脚本的第一行,如果其中包含perl字样,使用perl运行脚本。
但是,实际运行中,错误信息中提示了 sed 功能不识别。
运行结果中都是“运行的是CSHELL脚本,运行失败”
其实除了sed之外,我还尝试了awk grep等其他Cshell工具程序。都提示功能不识别(不知道是什么鬼,windows版本和Xmanager的问题?)。
但是,实际上,只是需要确认在一种条件,能够让Genesis使用perl来运行脚本。
后面,我直接尝试使用正则看脚本文件是否以‘.pl'结尾,(希望正则不要不行)
结果是,尝试成功。
在下面的if语句中增加了使用正则判断文件名后缀的方法,代码:
else if("$PROG" =~ *.pl)then
echo "Executing Perl Program $PROG $argv"
perl $PROG $argv
set PROG_STATUS=$status
else
英文的东西看的多了,有些东西就不那么排斥了,至于genesis目录下那么多文件夹、文件都是干什么的其实都写在说明文档里面了,多回头看看才是真。
2018年08月29日 06点08分 1
level 4
我也想学习写脚本,大佬,可以教我吗
2019年05月15日 03点05分 2
level 1
perl外挂怎么和Genesis连接呀,外挂又怎么和脚本连接呀,分享下哈
2020年02月11日 03点02分 3
1