2012-01-27 91 views
0

我使用反引號在Perl中運行外部命令,但是我遇到了問題。運行外部命令時出現問題

我想要做的就是運行

`mount /dev/sdb2 /mnt` 

但sdb2只有當我與這個磁盤上運行它的正確參數,我希望能夠與任何磁盤運行該腳本。

該腳本獲取有關我正在使用的源磁盤(在本例中爲sdb)的信息,並將其放置爲「$ source」。但是,當我嘗試:

`mount $source /mnt` 

它說:「安裝:你必須指定文件系統類型」

在這種情況下,程序會詢問有關如何使「2」

任何想法該腳本找到需要的號碼,或者至少如何在「$ source」之後添加「2」以便

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

在此先感謝!

+4

我沒有看到任何需要解決的問題。你問如何讓你的程序要求分區號?如果是這樣,請編輯您的問題來澄清,併發布您迄今爲止嘗試過的代碼。 – Mat 2012-01-27 08:41:18

+0

這是否足夠清楚或者我應該澄清更多? 感謝指針順便說一句,我是新來的,我需要所有的幫助,我可以得到! =) – 2012-01-27 09:13:20

+0

不是。沒有什麼可以「猜測」正確的分區號(你所說的「2」)。要麼你的程序需要列出該驅動器上的所有分區(可以用'glob'來完成)並嘗試所有分區(不是一個好主意),或者你需要從用戶那裏獲得正確的輸入。你添加的最後兩行讓我完全不明白他們應該表達什麼。 – Mat 2012-01-27 09:16:17

回答

2

使用大括號:

`mount ${source}2 /mnt` 

NB。請確保您驗證了$source的值,以免引入代碼注入漏洞。

+0

謝謝,這真的有助於:) – 2012-01-27 09:28:34

+2

+ 1爲精湛的思想閱讀能力 – mob 2012-01-27 16:00:53