web-dev-qa-db-fra.com

obtenir la variable bash dans le nom de fichier pour la commande Zip

Dans un script bash, comment utiliser une variable pour créer un fichier zippé spécifiquement nommé? Par exemple, je voudrais faire quelque chose comme:

VERSION_STRING='1.7.3'
Zip -r foo.$VERSION_STRING foo

Où je me retrouve idéalement avec un fichier appelé foo.1.7.3.Zip

Il semble que j'ai deux problèmes:

  1. la commande Zip traite $VERSION_STRING comme si c'était nul ou vide
  2. les . après foo semble aussi le nettoyer
26
Jared Henderson

Ce qui suit fonctionne très bien ici en utilisant bash 4.1.5:

#!/bin/bash

VERSION_STRING='1.7.3'
echo Zip -r foo foo.$VERSION_STRING.Zip

J'ai ajouté le echo pour voir la commande réelle plutôt que de l'exécuter. Le script s'imprime

Zip -r foo foo.1.7.3.Zip
16
NPE

vous pouvez utiliser ${VERSION_STRING} pour envelopper clairement le nom de votre variable

28
cyber-monk

Je pense que vous avez vos entrées Zip à l'envers. Pour moi, la commande suivante:

Zip -r foo.${VERSION_STRING}.Zip foo

crée un fichier Zip valide. Votre commande ne fonctionne pas (du moins avec ma version de Zip).

11
Andy