【问题标题】:Shell Script Not Executing Asterisk When Part Of Filename当文件名的一部分时,Shell 脚本不执行星号
【发布时间】:2017-06-23 19:24:45
【问题描述】:

所以用例非常简单,如果我像这样在终端中运行命令

myCommand -input file_prefix* -output outputFolder

它将抓取目录中所有具有该前缀的文件,运行命令并将其吐到输出文件夹中。自己很容易。但是,如果我将确切的命令复制粘贴到 Shell 脚本中以在 PHP 或类似文件中运行,它会显示 file_prefix* 找不到文件。这是因为它将星号读取为文字字符而不是通配符。我试过用单引号、双引号等将星号括起来。知道如何做到这一点吗?我见过一些人回应 asterix 的例子,但没有人像我作为文件前缀的一部分那样使用它。谢谢你的帮助!

【问题讨论】:

  • 在 php 内部你不会只使用glob吗?
  • shell 正在扩展 file_prefix* 之前 myCommand 被调用。还有一个bash 选项failglob,它决定了shell 是否应该将不匹配的模式视为错误或仅将其视为文字字符串(就像引用一样)。
  • 您的回答无法解决发布的问题。您可以使用您正在运行的实际代码更新问题吗?如果您想隐藏它的详细信息,请在运行之前执行此操作,以便它更具重现性

标签: linux bash shell sh


【解决方案1】:

看起来这个问题的正确答案实际上是将我的 file_prefix 放在引号中并单独留下星号。最终工作副本

myCommand -input 'file_prefix'* -output outputFolder

我的 file_prefix 是一个输入参数,所以实际的最终代码是

myCommand -input '$1'* -output $2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多