2012-01-27 56 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