2017-02-01 7 views
0

Я очень новичок в программировании, особенно в bash.замените части команды в скрипте bash с аргументами

Я часто запускаю ту же длинную команду, которая заполняется множеством аргументов каждый день, но с разными именами файлов и одним другим аргументом, основная часть строки остается неизменной. Это относится к серверу Clonezilla.

Я хочу, чтобы иметь возможность запускать скрипт, который запрашивает только те части, которые я хочу изменить, а затем заменяет эти значения в исходную строку и передает ее вместе с оболочкой.

Например:

У меня есть набор имен файлов: a.img b.img C.IMG

команда я бегу: drbl-ocs -b -g auto -e1 auto -e2 -r -x -j2 -sc0 -p poweroff --clients-to-wait <number value here> -l en_US.UTF-8 startdisk multicast_restore <name of file> nvme0n1

Моя цель состоит в том, чтобы иметь возможность ввести : sudo sh myscript.sh arga argb

где «arga» - это номер, который заменяет <number value here>, а «argb» заменяет <name of file> в приведенной выше строке.

Спасибо за помощь!

+1

Поместите его в файл и измените '<значение числа здесь>' на '" $ 1 "и' <имя файла> 'на' "$ 2" '? – 123

+0

@ 123, вы должны добавить ответ –

+0

@glennjackman Я уверен, что где-то должен быть дубликат. – 123

ответ

1

Аргументы командной строки для скрипта можно найти в позиционных параметрах , параметры которых являются положительными целыми числами.

#!/bin/sh 

drbl-ocs -b -g auto -e1 auto -e2 -r -x -j2 -sc0 \ 
     -p poweroff --clients-to-wait "$1" -l en_US.UTF-8 \ 
     startdisk multicast_restore "$2" nvme0n1 
+0

Просто примечание: во многих случаях вы можете использовать функцию оболочки вместо того, чтобы беспокоиться о файле сценария; но вы не можете использовать 'sudo' для функций оболочки, поэтому в этом случае сценарий - это путь. –