Forum Programmation.shell lancer un fichier .sh depuis un fichier .bat

Posté par  .
Étiquettes : aucune
0
22
fév.
2006
Bjr

Je continus ds mon histoire.

Je cherche à lancer un .sh depuis un .bat.

Ds mon .sh j'ai le script suivant:
#!/bin/sh

mkdir `date +%A_%e_%B_%Y`

Ds mon .bat j'ai le script suivant
CALL script1.sh

Et donc lorsque je lance mon .bat ds une invitemsdos, mon fichier sh s'ouvre mais ne se lance pas.

Pourquoi

Merci d'avance.
  • # sous windows ?

    Posté par  . Évalué à 1.

    call doit lancer un interpréteur de commandes
    ms-dos, qui ne comprend pas la syntaxe
    de ton shell script.

    #! ne signifie rien pour ms-dos

    La gent féminine, pas la "gente", pas de "e" ! La gent féminine ! Et ça se prononce comme "gens". Pas "jante".

  • # cygwin

    Posté par  . Évalué à 1.

    Installes bash. Pour Windows, il faut que tu installes cygwin afin d'installer bash.

    Bash va reconnaiître ton script.

    Il suffira donc taper (si bash a été installé dans le PATH de DOS) :
    bash script1.sh

    il est inutile de créer un .bat pour ça (si tu y tiens, tu peux mettre CALL bash script1.sh).
    • [^] # Re: cygwin

      Posté par  . Évalué à 0.

      Mon script est le suivant:

      #!/bin/sh

      mkdir `date +%A_%e_%B_%Y`

      xcopy /s /e z:\test c:\cygwin\bin\`date +%A_%e_%B_%Y`

      Donc je cherche à copier des fichiers dans le repertoire que je viens de créer, mais avec ma syntaxe actuelle cela ne marche pas.

      Peux tu m'aider?
      • [^] # Re: cygwin

        Posté par  . Évalué à 1.

        Je ne connais pas trop DOS, mais si déjà tu utilises un script de type unix, utilises des commandes unix (xcopy c'est un commande DOS).
        D'après les tests que j'ai fait, cygwin fourni la commande Unix "date", mais DOS en a aussi une avec une syntaxe différente. Donc pour lancer ton script, créé une icône du shell cygwin sur le bureau (chez moi le raccourci pointe vers C:\cygwin\cygwin.bat) et lance le shell cygwin (une fenêtre texte s'ouvrira avec bash comme shell). De là tu pourras lancer ton script

        #!/bin/sh

        mkdir `date +%A_%e_%B_%Y`
        cp -R z:\test c:\cygwin\bin\`date +%A_%e_%B_%Y`

        Le script ci-dessus va copier (si le répertoire que tu as créé se trouve dans c:\cygwin\bin\) le répertoire test dans le répertoire créé. Le résultat sera : c:\cygwin\bin\`date +%A_%e_%B_%Y`\test (et tous les fichiers et répertoires dans test)

        Si tu veux copier le contenu de z\test dans c:\cygwin\bin\`date +%A_%e_%B_%Y` c'est le script suivant qu'il faut :

        #!/bin/sh

        cp -R z:\test c:\cygwin\bin\`date +%A_%e_%B_%Y`

        Ici le répertoire `date +%A_%e_%B_%Y` n'existe pas donc il sera créé et rempli avec le contenu de z:\test

        Nota : cp -R : copie du répertoire Récursivement (d'où le -R) donc avec tous les sous-répertoires et fichiers

        Fais un : "man cp" pour avoir une documentation sur les options possibles de cp (conservation des droits par exemple). Pour un backup tu peux utiliser cette commande à la place de celle indiquée dans le script : cp -a z:\test c:\cygwin\bin\`date +%A_%e_%B_%Y`

        Autre chose, quand on dit "ça ne marche pas" et que l'on veut de l'aide, il faut donner plus d'informations (message d'erreur, commande tapée ...)
        • [^] # Re: cygwin

          Posté par  . Évalué à 0.

          je viens de tester le script que tu m'as donné et j'ai deux erreurs lorsque je le lance depuis cygwin.

          peux tu me dire ce qu'il en est

          /usr/bin/script1.sh: line 3: unexpected EOF whilelooking for matching `'`
          /usr/bin/script1.sh: line 4: syntax error: unexpected end of file

          j'ai essayé de changer ' par `ou ".

          cela ne change pas
  • # Solutions

    Posté par  . Évalué à 0.

    Merci à vous pour votre aide.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.