¿Cómo puedo crear una instrucción de línea de comando (Unix/linux) que use variables para ejecutar numerosos comandos?

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

  •  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í?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top