2012-01-27 3 views
0

Я использую backticks для запуска внешней команды в perl, но у меня есть проблема.Проблема при запуске внешней команды

То, что я хочу сделать, это запустить

`mount /dev/sdb2 /mnt` 

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

Сценарий получает информацию об исходном диске, который я использую (в данном случае, sdb), и помещает его как «источник». Но когда я попробовать:

`mount $source /mnt` 

Он говорит «горе: вы должны указать тип файловой системы»

В этом случае программа просит для «2»

Любые идеи о том, как сделать сценарий найти номер, который requried, или, по крайней мере, как добавить «2» после «$ источника» так что

$source = /dev/sdb2 and not /dev/sdb 

Спасибо заранее!

+4

Я ничего не вижу, чтобы исправить. Вы спрашиваете, как заставить вашу программу запрашивать номер раздела? Если да, отредактируйте свой вопрос, чтобы уточнить, и отправьте код, который вы пробовали до сих пор. – Mat

+0

Является ли это достаточно ясным или я должен уточнить больше? Спасибо за указатель btw, я новичок в этом, и мне нужна вся помощь, которую я могу получить! =) –

+0

Не совсем. Ничто не может «догадаться» о правильном номере раздела («2», о котором вы говорите). Либо ваша программа должна перечислить все разделы на этом диске (может сделать это с помощью «glob»), и попробовать их все (не очень хорошая идея), или вам нужно получить правильный ввод от пользователя. Последние две строки, которые вы добавили, полностью озадачили меня тем, что они подразумевают/показывают. – Mat

ответ

2

использовать фигурные скобки:

`mount ${source}2 /mnt` 

nb. убедитесь, что вы проверяете значение $source s, чтобы не вводить уязвимости при инъекции кода.

+0

Спасибо, это действительно помогло :) –

+2

+1 для превосходных умений чтения – mob

Смежные вопросы