【问题标题】:Using wildcard characters while running system command in Perl Script在 Perl 脚本中运行系统命令时使用通配符
【发布时间】:2015-03-31 12:01:55
【问题描述】:

在 Perl 脚本中运行系统命令时如何使用通配符。 例如,使用 *.src 使用 sed 编辑文件 - 类似于:

system("sed -i -e 's/foo/bar/g'  $baseDirPath/*.src");

它给出一个错误:sed: can't read /home/test/*.src: Not a Directory

这里,$baseDirPath被初始化为/home/test

【问题讨论】:

  • 你显示的那一行应该可以正常工作。
  • 您在尝试时遇到错误还是有其他问题?请注意,如果您的脚本有一堆特殊字符,单引号通常是一个更好的主意,因为双引号意味着字符串在传递之前由 perl 插值。
  • @DeVadder 编辑了问题以包含相关详细信息。
  • @AnuragSaran 该输出与按预期工作的 perl 一致。你确定真的有这些文件吗?也许您打算使用~/test/*.src(您家中的一个测试文件夹,而不是某个名为 test 的用户的主文件夹)?然而,很明显,路径和通配符确实到达了 sed 命令,如错误消息所示。所以,如果有的话,你这里的 sed 有问题,而不是 Perl。

标签: perl command system wildcard


【解决方案1】:

尝试在使用变量 $baseDirPath 之前对其进行 chomp,因为您编写的行应该可以正常工作。

【讨论】:

  • 如果你能添加一些细节/解释会很棒
猜你喜欢
  • 2014-03-18
  • 2013-06-12
  • 2013-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-15
相关资源
最近更新 更多