2015-04-16 2 views
1

Я использую Git Bash, и я хотел бы написать скрипт, обрабатывающий один и тот же набор команд для каждого каталога (локальное репо) в моем домашнем каталоге. Это было бы достаточно просто в DOS, который в лучшем случае считается инвалидом, поэтому я уверен, что есть способ сделать это в bash.Процесс сценария Bash Shell Каждый каталог в доме

Например, некоторые псевдо-код:

ls --directories-in-this-folder -> $repo_list 
for each $folder in $repo_list do { 
    ...my commmand set for each repo... 
} 

Кто-нибудь знает, как это сделать в Bash?

ответ

1

Вы можете сделать это в Баш (даже на Windows, если имя вашего сценария ГИТ-ххх в любом месте %PATH%)

#! /bin/bash 
cd /your/git/repos/dir 
for folder in $(ls -1); do 
    cd /your/git/repos/dir/$folder 
    # your git command 
done 

Как уже упоминалось в «Git Status Across Multiple Repositories on a Mac», вы не должны даже компакт-диск в папке мерзавец репо для того, чтобы выполнить команду GIT:

#! /bin/bash 
cd /your/git/repos/dir 
for folder in $(ls -1); do 
    worktree=/your/git/repos/dir/$folder 
    gitdir=$worktree/.git # for non-bare repos 
    # your git command 
    git --git-dir=$gitdir --work-tree=$worktree ... 
done 
+0

Спасибо, но я получаю сообщение об ошибке: 'sH.exe": 'repo_dir = $ (Ls -1) ': не является допустимым идентификатором '. Если я запускаю' ls -1' сам по себе в скрипте, он работает нормально, но ошибка возникает, когда часть оператора for. –

+0

@JimFell К сожалению: http://www.cyberciti.biz/faq/bash-for-loop/. Я отредактирую ответ. – VonC

Смежные вопросы