微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何向Bash函数添加选项

我是 linux新手(使用Ubuntu 10.10),我想在.bashrc中添加一个启动/停止tomcat服务器的函数.我正在尝试解析命令“tomcat”的两个选项.我已经在各种排列中尝试了以下内容,但它们都不起作用.
export CATALINA_HOME=/tomcat/directory

function tomcat {
       if [$1 = "-s" ]; then
          `sh $CATALINA_HOME/bin/startup.sh`
       elif [$1 = "-x"]; then
          `sh $CATALINA_HOME/bin/shutdown.sh`
       else
          echo "Enter '-s' to start Tomcat,'-x' to shutdown."
       fi
    }

为什么这不起作用?什么是正确的方法呢?

谢谢!

将所有内容放在一起,我认为这段代码适合您:
export CATALINA_HOME=/tomcat/directory

function tomcat {
    if [ "$1" = "-s" ]; then
        sh $CATALINA_HOME/bin/startup.sh
    elif [ "$1" = "-x" ]; then
        sh $CATALINA_HOME/bin/shutdown.sh
    else
        echo "Enter '-s' to start Tomcat,'-x' to shutdown."
    fi
}

您的版本的重要更改:

>删除了启动和关闭命令的反引号
>用双引号括起$1变量

关于bash语法和安全性的一些注意事项:

> function tomcat {相当于tomcat(){>正如@ooshro指出的那样,在[之后 – 如果有疑问的话,将它放出来之后需要一个空格>在比较中,你应该更喜欢= over ==,因为single-equals是其他shell使用的标准>总是用双引号括起变量(如$1),特别是在比较语句中,或者任何将它们排除在外会导致问题的地方> @ ooshro的案例语法是一种更简洁的方法来处理这个问题,但是如果你打算在将来使你的代码更加复杂,它可能会不那么灵活> backquotes捕获命令的输出,然后将其替换为脚本,所以如果用反引号包围整行,bash将执行该行,然后尝试执行输出,这很少是你可能想要的>你不需要这个脚本的反引用功能,但是当你这样做时,我建议使用$(…)语法,因为它是可嵌套的,在我看来更容易阅读和理解

原文地址:https://www.jb51.cc/bash/385638.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐