converter morcego para sh

2

Eu sou totalmente novo em scripting no linux ... então eu quero portar alguns arquivos simples para o Ubuntu.

Primeiro arquivo é fácil

  setenv.bat
    set ANT_HOME=c:\ant\apache-ant-1.7.1
    set JAVA_HOME=c:\java

no linux eu fiz isso e parece ok

  setenv.sh
      #!/bin/bash
    JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.24/
    ANT_HOME=/usr/share/ant
    echo $JAVA_HOME
    echo $ANT_HOME

mas agora eu quero portar este arquivo bat:   startserver.bat

call ../config/setenv

call %ANT_HOME%/bin/ant -f ../config/common.xml start_db
call %ANT_HOME%/bin/ant -f ../config/common.xml start_server


pause

mas eu não tenho idéia de como posso fazer isso na chamada linux ../ config / setenv

obrigado por qualquer ajuda, direção dada.

    
por Cris 25.06.2011 / 00:10

4 respostas

5

Seria:

#!/bin/sh
source ../config/setenv.sh
${ANT_HOME}/bin/ant -f ../config/common.xml start_db
${ANT_HOME}/bin/ant -f ../config/common.xml start_server

source fará com que as variáveis que estão definidas em setenv.sh estejam disponíveis para o seu script atual.
${ANT_HOME}/bin/ant executará o binário ant. O pause apenas esperará para que a janela do cmd.exe não feche, sugiro não portar isso.

De qualquer forma, tudo isso é realmente básico, dê uma olhada em alguns tutoriais básicos sobre scripts de shell como: link

    
por 25.06.2011 / 00:28
2
 #!/bin/bash
 cd /path/to/working/directory
 source ../config/setenv
 $ANT_HOME/bin/ant -f ../config/common.xml start_db
 $ANT_HOME/bin/ant -f ../config/common.xml start_server
 sleep 10

Quando você estiver em um script, poderá chamar os scripts diretamente. No entanto, o problema é que todas as chamadas são relativas. Tudo bem se você pode ter certeza disso - então o que você pode fazer é adicionar um comando para ter certeza disso - cd / path / to / working / directory

    
por 25.06.2011 / 00:25
1

Se você quiser puxar essas variáveis de ambiente, use a palavra-chave "source" (aka '.') em vez de chamar

para iniciar os programas que você não precisa prefixar "call"

adicionalmente variáveis são referenciadas por $ variablename em vez de% variablename%

    
por 25.06.2011 / 00:28
1

E outro exemplo:

#!/bin/bash

export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.24/
export ANT_HOME=/usr/share/ant

$ANT_HOME/bin/ant -f ../config/common.xml start_db
$ANT_HOME/bin/ant -f ../config/common.xml start_server
    
por 25.06.2011 / 00:37