Как я могу создать инструкцию командной строки (unix/linux), которая использует переменные для выполнения многочисленных команд?

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

  •  09-06-2019
  •  | 
  •  

Вопрос

Мне нужно изменить порядок содержимого в разных каталогах, но это немного затруднительно.Чтобы отладить приложение, над которым я работаю (приложение Ruby), мне нужно по одному перемещать драгоценные камни в папку драгоценных камней (длинная история;в двух словах:один сломан и я не могу понять какой).

Поэтому мне нужно сделать что-то вроде:

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

заменяя «foo» каждый раз.Как я могу написать простой сценарий оболочки, позволяющий мне делать что-то вроде:gemMove("foo") и он заполняет для меня пробелы?

Это было полезно?

Решение

поместите следующее в файл с именем 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

тогда делай

chmod a+x gemmove

а затем вызовите sudo gemmove foo, чтобы переместить драгоценный камень foo из резервной папки в реальную.

Другие советы

Вы можете просто использовать аргументы оболочки bash, например:

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

а затем выполните его как:

sudo ./move.sh foo

Обязательно сделайте скрипт исполняемым, используя

chmod +x move.sh

в bash что-то вроде:

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

тогда ты можешь просто позвонить gemMove("foo") в другом месте сценария.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top