2011-05-27 41 views

回答

4

此命令執行以下操作: -

  • hg parents運行善變命令父母
  • awk -F: '/^changeset:/ { print $2 }'開始在awk讀取它的輸入和與變更開頭的行它打印第二場在線上(字段用:分隔)
  • sed -e 's/ //g' -e 1q`讀取其所有輸入,刪除空格並打印第一行
  • export changeset=將引號之間的所有內容都作爲一系列命令運行,並將結果賦給變量變更集。

管道符號將命令連接在一起,導致一個程序的標準輸出(STDOUT)成爲另一個程序的標準輸入(STDIN)。

因此,總之,變量changeset將包含hg parents命令的第一行中的第二個字段,該命令以changeset開頭。

1

Steve Weet's answer解釋發生了什麼。你的管道可以簡化。在你的awk聲明中,因爲你的分隔符是:,所以你可以說awk -F: '$1 == "changeset" {print $2}'。另外,由於awk和sed具有許多重疊的功能,因此您可以編寫(如果您願意,可以在一行中完成):

export changeset=$(
    hg parents | 
    awk -F: '$1 == "changeset" {gsub(/ /, "", $2); print $2; exit}' 
) 
相關問題