Come posso creare un'istruzione della riga di comando (unix/linux) che utilizza variabili per eseguire numerosi comandi?

StackOverflow https://stackoverflow.com/questions/74886

  •  09-06-2019
  •  | 
  •  

Domanda

Ho bisogno di riorganizzare alcuni contenuti in varie directory, ma è un po' una seccatura.Per eseguire il debug dell'applicazione su cui sto lavorando (un'app Ruby) devo spostare le mie gemme nella cartella delle gemme una alla volta (lunga storia;guscio di noce:uno è rotto e non riesco a capire quale).

Quindi devo fare qualcosa del tipo:

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

sostituendo "foo" ogni volta.Come posso creare un semplice script di shell che mi permetta di fare qualcosa del tipo:gemMove("foo") e riempie gli spazi vuoti per me?

È stato utile?

Soluzione

inserisci quanto segue in un file chiamato 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

Quindi fa

chmod a+x gemmove

e poi chiama 'sudo gemmove foo' per spostare la gem foo dalle directory di backup a quelle reali

Altri suggerimenti

Potresti semplicemente usare gli argomenti della shell bash, in questo modo:

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

e quindi eseguirlo come:

sudo ./move.sh foo

Assicurati di rendere eseguibile lo script, con

chmod +x move.sh

in bash, qualcosa del tipo:

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

allora puoi semplicemente chiamare gemMove("foo") altrove nella sceneggiatura.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top