Как я могу создать инструкцию командной строки (unix/linux), которая использует переменные для выполнения многочисленных команд?
-
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")
в другом месте сценария.