在 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 机器人的主要内容,如果未能解决你的问题,请参考以下文章