我是Linux新手(使用Ubuntu 10.10),我想添加一个函数.bashrc启动/停止一个tomcat服务器。 我试图parsing命令“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 }
从您的版本的重大变化:
$1variables包含在双引号中 关于bash语法和安全的一些注意事项:
function tomcat {相当于tomcat() { [ if – 如果有疑问之后将空间分散出去之后需要空间 = over == ,因为single-equals是其他shell使用的标准 $1 ),特别是在比较语句中,或者将它们排除在外的任何地方都会导致问题 case语法是解决这个问题的一个更简洁的方法,但是如果你打算在将来使代码更复杂 $(...)语法,因为它是可嵌套的,并且在我看来更容易阅读和理解 尝试(错误在'['之后缺less空格:
export CATALINA_HOME=/tomcat/directory tomcat() { case "$1" in -s) ${CATALINA_HOME}/bin/startup.sh;; -x) ${CATALINA_HOME}/bin/shutdown.sh;; *) "Enter '-s' to start Tomcat, '-x' to shutdown." esac }
你是什么意思“不起作用”? 你有什么错误信息吗? 当你开始你的function会发生什么?
尝试在“[”和“]”之前和之后放置一个空格。
另外引用$ 1作为“$ 1”。
而“=”应该是“==”,所以:
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 }
为我工作。