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