【发布时间】:2025-04-10 02:35:02
【问题描述】:
我写了一个 Perl 脚本,它返回 1 或 0 取决于它是否失败/成功。我有一个读取返回值的 .csh shell 脚本。
.csh 命令是这样的:
> setenv CHECKER `perl $BIN_DIR/sgRevisionChecker.pl`
if($CHECKER) then
do stuff
else
echo 'Successful Run'
exit
endif
但是,即使在 Perl 脚本中我说“退出 1”或“退出 0”,Perl 脚本也不会传递正确的值。
但是,如果在 Perl 脚本中我这样做:
print "1";
exit 1;
然后我的 shell 脚本得到这个值。如果我打印它似乎会获得价值,但我认为这并不可靠,我想以正确的方式去做。我尝试了其他解决方案,但打印似乎是唯一的解决方法。
将值从 Perl 返回到 .csh 脚本的正确方法是什么?
【问题讨论】:
-
好吧,在 bash 中,
RETURN=$( some_script.pl )会将 $RETURN 设置为脚本打印的任何内容。正确的做法是some_script.pl; RETURN=$? -
快速谷歌:bima.astro.umd.edu/checker/node22.html 你想要 $status 变量。
-
我没有使用 bash。那是行不通的。我相信我在 tcsh。
-
输入:“ps -p $$”(不带引号)以获取您正在使用的外壳
-
@CliffordMaxwell 是的,我只是想用我原来的评论给你一个想法。我认为它在 csh 中是相似的。