Comment puis-je créer une ligne de commande (unix / linux) instruction qui utilise des variables pour exécuter de nombreuses commandes?

voix
1

Je dois réorganiser certains contenus dans divers répertoires, mais il est un peu une douleur. Pour déboguer l'application je travaille (une application Ruby) Je dois déplacer mes pierres précieuses dans mon dossier de pierres précieuses une à une (longue histoire, bref: on est cassé et je ne peux pas comprendre que l'on).

Donc, je dois faire quelque chose comme:

sudo mv backup/gem/foo gem/
sudo mv backup/doc/foo doc/
sudo mv backup/specification/foo.gemspec specification/

remplaçant « toto » à chaque fois. Comment puis-je un auteur simple script shell pour me laisser faire quelque chose comme: gemMove ( « foo ») et remplir les espaces vides pour moi?

Créé 16/09/2008 à 18:37
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
4

il faut mettre dans un fichier nommé gemmove:

#!/bin/bash

foo=$1

if [ x$foo == x ]; then
  echo "Must have an arg"
  exit 1
fi

for d in gem doc specification ; do 
  mv backup/$d/$1 $d
done

alors fais

chmod a+x gemmove

puis appeler « sudo gemmove foo » pour déplacer le joyau foo de la sauvegarde dirs dans les vrais

Créé 16/09/2008 à 18:39
source utilisateur

voix
1

en bash, quelque chose comme:

function gemMove()
{
filename=$1
   mv backup/gem/$filename gem/$filename
   mv backup/doc/$filename doc/$filename
   mv backup/specification/$filename.spec specification
}

alors vous pouvez simplement appeler gemMove("foo")ailleurs dans le script.

Créé 16/09/2008 à 18:47
source utilisateur

voix
1

Vous pouvez simplement utiliser les arguments shell bash, comme ceci:

#!/bin/bash
# This is move.sh
mv backup/gem/$1 gem/
mv backup/doc/$1 doc/
# ...

puis l'exécuter comme:

sudo ./move.sh foo

Assurez-vous rendre le script exécutable, avec

chmod +x move.sh
Créé 16/09/2008 à 18:41
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more