仔细研究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 功能不识别。
其实除了sed之外,我还尝试了awk grep等cshell工具程序,都提示功能不识别(不知道是什么鬼)。
但是,实际上,只是需要确认在一种条件,能够让Genesis使用perl来运行脚本。
后面,我直接尝试使用正则看脚本文件是否以‘.pl'结尾,(希望正则不要不行)
结果是,尝试成功。
代码:
else if("$PROG" =~ *.pl)then
echo "Executing Perl Program $PROG $argv"
perl $PROG $argv
set PROG_STATUS=$status
else
所以说,解决问题,还是要结合问题源头出手。genesis的原理,在pdf档里面其实已经写得很清楚,就看你能不能识别到。
所以研究了一下,想搞清楚为什么部分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 功能不识别。
其实除了sed之外,我还尝试了awk grep等cshell工具程序,都提示功能不识别(不知道是什么鬼)。
但是,实际上,只是需要确认在一种条件,能够让Genesis使用perl来运行脚本。
后面,我直接尝试使用正则看脚本文件是否以‘.pl'结尾,(希望正则不要不行)
结果是,尝试成功。
代码:
else if("$PROG" =~ *.pl)then
echo "Executing Perl Program $PROG $argv"
perl $PROG $argv
set PROG_STATUS=$status
else
所以说,解决问题,还是要结合问题源头出手。genesis的原理,在pdf档里面其实已经写得很清楚,就看你能不能识别到。