2017-08-07 98 views
1

我試圖克隆下來的git回購的同時在不同的Mac端片,因爲它們需要很長的時間來克隆下來。併發執行

我已經嘗試了很多的變化之下,但似乎無法讓每個單獨的克隆,然後在3個不同的終端選項卡下面的命令,在同一時間運行,我如何能更改以下任何想法要做到這一點,而不需要安裝諸如ttab之類的外部功能?

cwd=$(pwd) 
osascript -e 'tell application "Terminal" to activate' -e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' -e 'tell application "Terminal" to do script "cd '$cwd' && git clone [email protected]:me/myrepo1.git && cd myrepo1 && git pull && nvm use && npm install &" in selected tab of the front window' & 
osascript -e 'tell application "Terminal" to activate' -e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' -e 'tell application "Terminal" to do script "cd '$cwd' && git clone [email protected]:me/myrepo3.git && cd myrepo2 && git pull && nvm use && npm install" in selected tab of the front window' & 
git clone [email protected]:me/myrepo3.git && cd myrepo3 && git pull && nvm use && npm install 

回答

1

這將做到這一點。

#!/bin/bash 

declare -a repos=("myrepo1" "myrepo2" "myrepo3") 
me="[email protected]:me" 

pwd=`pwd` 
for i in "${repos[@]}" 
do 
    osascript -e "tell application \"Terminal\"" -e "tell application \"System Events\" to keystroke \"t\" using {command down}" -e "do script \"cd $pwd; git clone $me/$i.git && cd $i && git pull && nvm use && npm install\" in front window" -e "end tell" > /dev/null 
done 

注:

  • 你不應該有克隆回購後使用git pull,但我一直是在腳本反正,因爲它不會做任何傷害。
  • 如果使用nvm use,請確保您有一個.nvmrc文件,其中每個項目所在的根目錄指定的節點版本。否則nvm use將無法​​正常工作。
    • 您可能已經知道這一點,但我想在 中說明您的腳本無法運行。
+0

很好的答案,謝謝! – JL9

+0

沒問題:)我很高興它有幫助。 –