Я написал скрипт bash, в котором хранится общее количество строк и путь ко всем файлам, которые извлекаются из локального репо git на моем компьютере в таблицу Excel. Я вызываю этот скрипт bash из макроса Excel (VBA), используя функцию Exe c. Сценарий принимает аргументы, такие как git -repo-url, имя-ветви и путь, по которому он должен быть клонирован, если его нет в машине.
Bash сценарий, который я написал, выглядит следующим образом:
if [ ! -d "$3" ]
then
git clone "$1" "$3"
fi
cd "$3"
git checkout "remotes/origin/$2"
git pull origin $2
git ls-files | grep '\.java$\|\.cpp$' | xargs wc -l | awk ' BEGIN {printf(
"%5s\n", "Count \t Path")} { printf ("%6s\n", $1 "\t" $2 )}' > new.xls
Ниже приведен код VBA, который я пытался вызвать сценарий bash с аргументами:
reponame = ActiveWorkbook.Worksheets("Project Snap shot").Range("J3")
branchname = ActiveWorkbook.Worksheets("Project Snap shot").Range("J4")
dirname = ActiveWorkbook.Worksheets("Project Snap shot").Range("J5")
CreateObject("WScript.Shell").Exec("C:/Program Files/Git/git-bash.exe
C:/demo/script.sh reponame branchname dirname").StdOut.ReadAll
Здесь reponame, branchname и dirname являются входными данными пользователя и имеют соответствующие значения в нем. Bash Сценарии выполняются, как и ожидалось, когда я жестко кодирую значения в качестве аргументов командной строки вместо имен переменных. Когда я передаю переменные в качестве аргументов, он принимает имена переменных, а не их значение.
Как передать переменную в качестве аргументов, используя функцию Exe c в Vba? Заранее спасибо.