在 bash 中包装 perl 脚本 - 回显到 IRC 机器人

Posted

技术标签:

【中文标题】在 bash 中包装 perl 脚本 - 回显到 IRC 机器人【英文标题】:wrapping a perl script in bash - echo to IRC bot 【发布时间】:2014-08-18 19:18:25 【问题描述】:

我有一个 perl 脚本 - wow.pl。 我想编写一个将运行脚本的包装器,如果它成功退出, 向 IRC 聊天窗口回显一条消息,该窗口侦听 foo400host 上的端口 4514。 回声有效,但脚本不一定运行。

#!/bin/bash
if [ ~/scripts/wow.pl ] 
   then 
       echo "wow.pl is done" | /home/bin/nc foo400host 4514
fi

【问题讨论】:

使用[ ~/scripts/wow.pl ],您正在测试字符串~/scripts/wow.pl 是否不为空(始终为真)。如果要测试文件是否存在,请执行[ -f ~/scripts/wow.pl ] 实际上出于某种原因 - 我认为 "~/scripts/wow.pl" 将评估为 0 或零,如果脚本成功,if 语句将运行 echo。跨度> 【参考方案1】:

只需更改此行:

if [ ~/scripts/wow.pl ] 

if ~/scripts/wow.pl

[ ] 用于条件表达式,您想要的是测试命令本身的结果。

【讨论】:

【参考方案2】:

您需要检查脚本的返回状态,您可以使用$? 进行此操作

/usr/bin/perl ~/scripts/wow.pl
rc=$?
if [[ $rc == 0 ]] ; then
   echo "wow.pl is done" | /home/bin/nc foo400host 4514
fi
exit $rc

【讨论】:

以上是关于在 bash 中包装 perl 脚本 - 回显到 IRC 机器人的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 php 脚本没有将结果回显到原始页面中?

批处理脚本将变量内容回显到文本文件[重复]

将变量内容回显到文本文件中的批处理脚本[重复]

将文本框内容回显到 POST 请求中不起作用

使用Windows命令行将多行环境变量回显到文本文件

单击收音机并将值回显到 php(wordpress 主题)