【问题标题】:line of bash code from .configure file.configure 文件中的 bash 代码行
【发布时间】:2009-09-22 15:58:12
【问题描述】:

我需要理解下面这行代码:

BIN_DIR=`grep BIN_DIR= $SMLCM | head -1`

$SMLCH 包含路径

这是我目前所理解的:

  • grep 将产生一些字符串,可能的路径。 grep 对BIN_DIR= 有什么作用?

  • 路径被传递给head,路径中的所有文件都将用于提取它们的第一行

  • 某些东西被评估(究竟是什么?)并存储在BIN_DIR

最好的问候,

西蒙

【问题讨论】:

  • 这不应该是一个社区维基。
  • 可以,但无法撤消

标签: bash grep configuration-files pipe head


【解决方案1】:

这将在 $SMLCM 变量中指定的文件中找到所有出现的文字字符串“BIN_DIR=”,并且只获取该输出的第一行并将其分配给 BIN_DIR。

请注意,这可能无法按您希望的方式工作,因为分配给 BIN_DIR 的是一些字符串,例如“BIN_DIR=blah”,它可能具有与以下相同的效果:

BIN_DIR="BIN_DIR=blah"

【讨论】:

    【解决方案2】:
    • grep 将匹配由 var $SMLCM 命名的文件内容中包含 BIN_DIR= 的每一行
    • head 将占据第一行
    • 此行(反引号内的命令的结果)被重新分配给 BIN_DIR

    【讨论】:

      【解决方案3】:

      这将提取$BIN_DIR的值第一次出现在$SMLCM指向的文件中,并将其分配给当前脚本中的变量$BIN_DIR

      BIN_DIR=$(sed -n 's/^BIN_DIR=\(.*\)$/\1/p' $SMLCM | head -n 1)
      
      • sed -n : 运行流编辑器,不要打印出现的每一行
      • s/:替代
      • ^BIN_DIR= :以文本“BIN_DIR="
      • 开头 ("^") 的行
      • \(.*\)$ : 并以零个或多个 ("*") 任意字符 (".") 的组 ("\( \)") 结束 ("$")
      • / :将匹配替换为
      • \1 :第一个(在这种情况下,仅)组的内容
      • /p :完成替换并打印结果

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-04
        • 2020-05-10
        • 1970-01-01
        • 1970-01-01
        • 2021-10-08
        • 1970-01-01
        • 2017-10-14
        • 2021-10-07
        相关资源
        最近更新 更多