如何向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将执行该行,然后尝试执行输出,这很少是你可能想要的>你不需要这个脚本的反引用功能,但是当你这样做时,我建议使用$(…)语法,因为它是可嵌套的,在我看来更容易阅读和理解

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...