¿Cómo puedo crear una instrucción de línea de comando (Unix/linux) que use variables para ejecutar numerosos comandos?
-
09-06-2019 - |
Pregunta
Necesito reorganizar parte del contenido en varios directorios, pero es un poco molesto.Para depurar la aplicación en la que estoy trabajando (una aplicación Ruby), necesito mover mis gemas a mi carpeta de gemas una a la vez (larga historia;cáscara de nuez:uno está roto y no sé cuál).
Entonces necesito hacer algo como:
sudo mv backup/gem/foo gem/
sudo mv backup/doc/foo doc/
sudo mv backup/specification/foo.gemspec specification/
reemplazando "foo" cada vez.¿Cómo puedo crear un script de shell simple que me permita hacer algo como:¿gemMove("foo") y completa los espacios en blanco por mí?
Solución
coloque lo siguiente en un archivo llamado 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
entonces hazlo
chmod a+x gemmove
y luego llame a 'sudo gemmove foo' para mover la gema foo de los directorios de respaldo a los reales
Otros consejos
Simplemente podrías usar los argumentos de bash shell, como este:
#!/bin/bash
# This is move.sh
mv backup/gem/$1 gem/
mv backup/doc/$1 doc/
# ...
y luego ejecutarlo como:
sudo ./move.sh foo
Asegúrese de que el script sea ejecutable, con
chmod +x move.sh
en bash, algo como:
function gemMove()
{
filename=$1
mv backup/gem/$filename gem/$filename
mv backup/doc/$filename doc/$filename
mv backup/specification/$filename.spec specification
}
entonces puedes simplemente llamar gemMove("foo")
en otra parte del guión.