【问题标题】:bash scripting - getting number output onto screen as result of previous commandbash scripting - 将数字输出作为上一个命令的结果显示到屏幕上
【发布时间】:2011-09-25 13:20:51
【问题描述】:

我正在尝试自动将更改的文件复制到 perforce 更改列表中,但需要帮助获取生成的更改列表编号。我认为这对于 bash 脚本编写来说可能是一件直截了当的事情 - 但我还没有得到它!!...

基本上我执行命令

p4 change -o | sed 's/<enter description here>/This is my description./' | p4 change -i

因此,我在屏幕上得到了类似于下面一行的输出(显然数字发生了变化)

Change 44152 created.

我想要的是能够将生成的数字捕获到一个变量中,然后我可以在脚本的其余部分中使用(将未来的文件添加到同一个变更列表等)...

谁能给点建议?

谢谢

【问题讨论】:

    标签: bash scripting command-line perforce


    【解决方案1】:

    你可以使用cut。这是另一个相关的stackoverflow条目:

    use space as a delimiter with cut command

    【讨论】:

      【解决方案2】:

      喜欢这个

      change=`p4 change -o | sed 's/<enter description here>/This is my description./' | p4 change -i|cut -d f2`
      
      echo $change
      

      编辑:根据@Enigma 最后的评论

      如果您想在 sed 命令中使用 shell 变量,请在 sed 命令周围使用双引号 "" 而不是单引号 ''。如下所示

      sed "s/<enter description here>/ updating $change form/"
      

      导致“更新 44152 表单”($change 保持值 44152)

      【讨论】:

      • 显然有很多方法可以做到这一点,但我喜欢这种方法,它使用@mkro sugestion,非常感谢你们俩! (您会得到示例的答案标记;))
      • 抱歉,还有一件事,我尝试将 /This is my description./ 替换为一些动态数据,例如 /updating ${formName} form/ 但我在描述。 - 我怎么能逃脱这个? (注意,我也试过不使用 {})
      • @FireEnigmaX,不知道你是否已经解决了;如果你还没有看到我的编辑
      • 对不起,是的,我解决了,我使用了以下方法:changeListNum=p4 change -o | sed 's/&lt;enter description here&gt;/Commiting changes to '${ExportSubDir}' '${ArtifactName}'./' | p4 change -i|cut -d ' ' -f 2
      【解决方案3】:

      您可以使用 ` 字符捕获命令的输出。

      myVariable=`myCommand`
      

      你可以使用awk来获取第二列数据,数字部分。

      myVariable=`originalCommand|awk '{print $2}'`
      

      现在 myVariable 将是您的号码 44152。

      【讨论】:

        【解决方案4】:

        我会用这样的东西

        echo "Change 44152 created." | tr -d 'a-zA-Z .'
        

        【讨论】:

          【解决方案5】:

          如果你想获取最后生成的变更列表,你也可以输入

          variable=`p4 counter change`
          

          但这只有在您制作了更改列表后没有其他人制作更改列表时才有效。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-01-04
            • 2023-03-04
            • 1970-01-01
            • 2014-11-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-08-17
            相关资源
            最近更新 更多