Как передать аргументы командной строки в скрипт bash, вызываемый с помощью функции Exe c в VBA? - PullRequest
0 голосов
/ 17 апреля 2020

Я написал скрипт 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? Заранее спасибо.

1 Ответ

0 голосов
/ 17 апреля 2020

Вам необходимо объединить переменные в строку, используя знак &:

CreateObject("WScript.Shell").Exec("C:/Program Files/Git/git-bash.exe C:/demo/script.sh " & reponame & " " & branchname & " " & dirname).StdOut.ReadAll
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...