免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2722 | 回复: 7
打印 上一主题 下一主题

perl改写shell case [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-20 11:59 |只看该作者 |倒序浏览
大家好!请问如何用perl改写下面的shell语句,谢谢!
#!/bin/bash
  case $2 in
   
    start)
    echo "-----------------------------------"
    /usr/local/apache/bin/apachectl start
    /usr/local/nginx/sbin/nginx
    /usr/local/tomcat/bin/startup.sh
    echo "-----------------------------------"
    ;;

论坛徽章:
0
2 [报告]
发表于 2010-02-20 12:39 |只看该作者
这个还是最好别用PERL了,shell更好些。

如果非要改,要么自己用LABEL伪造个switch语句,要么用if...else

如:
  1. if ($ARGV[1] =~ /start/i) {
  2.     echo "-----------------------------------"
  3.     /usr/local/apache/bin/apachectl start
  4.     /usr/local/nginx/sbin/nginx
  5.     /usr/local/tomcat/bin/startup.sh
  6.     echo "-----------------------------------"   
  7. }
  8. elseif (...) {
  9. }
复制代码
注意shell里的$2到perl里应该是ARGV[1]了。

论坛徽章:
0
3 [报告]
发表于 2010-02-20 12:47 |只看该作者
谢谢yigenjin 的回复,有一个疑问,/usr/local/apache/bin/apachectl start 这些命令在perl中能直接执行吗?

论坛徽章:
0
4 [报告]
发表于 2010-02-20 12:55 |只看该作者
本帖最后由 climby 于 2010-02-20 12:58 编辑

我来发个用SWITCH伪造的条件判断

  1. #!/usr/bin/perl -w

  2. die "Missing arguments!" unless ( $ARGV[1] );
  3. SWITCH: for ( $ARGV[1] ) {

  4.     /start/i && do {
  5.         print "-" x (80) . "\n";
  6.         `/usr/local/apache/bin/apachectl start`;
  7.         `/usr/local/nginx/sbin/nginx`;
  8.         `/usr/local/tomcat/bin/startup.sh `;
  9.         print "-" x (80) . "\n";
  10.         last SWITCH;
  11.     };
  12. }
复制代码
在perl中让命令行执行可以将命令行放到``

论坛徽章:
0
5 [报告]
发表于 2010-02-20 13:12 |只看该作者
本帖最后由 yigenjin 于 2010-02-20 13:13 编辑

回复 3# trt2008

不能,我只是给你个伪代码。

我觉得楼上给的反引号的用法应该不可以(没测试),因为`command`是得到程序输出,缺少左值。应该会报错吧。

我推荐使用system("command"),更规矩。

以及我不喜欢用LABEL伪造循环,原因跟大家一致摒弃的goto语句一样。

论坛徽章:
0
6 [报告]
发表于 2010-02-20 13:23 |只看该作者
多谢,看来想彻底抛开shell还是不行地.

论坛徽章:
0
7 [报告]
发表于 2010-02-20 13:24 |只看该作者
回复 6# trt2008

适合什么就用什么。为什么非得抛弃?

论坛徽章:
0
8 [报告]
发表于 2010-02-20 16:36 |只看该作者
顶5F,在perl里执行shell命令须按system(""
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP