Bash Передача переменных в строку - PullRequest
0 голосов
/ 04 марта 2020

Итак, я пытаюсь создать псевдоним для открытия браузера по указанному URL-адресу c для меня, когда я запускаю команду pr в моей командной строке.

function pr() {
  repoName=(basename `git rev-parse --show-toplevel`)
  branchName=(`git rev-parse --abbrev-ref HEAD`)
  $repoName <- printing a-public
  $branchName <- printing acq-248
  open -a "Google Chrome" "https://bitbucket.org/company/$repoName/pull-requests/new?source=$branchName&event_source=branch_list"
}

Итак, когда Я запускаю pr, я вижу, что $ repoName и $ branchName имеют правильное значение, но открытый URL-адрес действительно интерпретирует его частично -> https://bitbucket.org/company/Users/v/projs/a-public/pull-requests/new?source=acq-248&event_source=branch_list

Итак, каков будет правильный способ передачи эти переменные объединить в URL, который я хочу открыть?

1 Ответ

1 голос
/ 04 марта 2020

оба они являются присвоением массива.

repoName=(basename `git rev-parse --show-toplevel`)
branchName=(`git rev-parse --abbrev-ref HEAD`)

Если вы хотите расширить вывод команды в подстановке команды использования переменной без обратных галочек, кроме $( )

repoName=$(basename $(git rev-parse --show-toplevel))
branchName=$(git rev-parse --abbrev-ref HEAD)

Попробуйте заключить в кавычки URL-адрес с %q, чтобы его можно было передать в оболочку в качестве безопасного аргумента.

var="https://bitbucket.org/company/$repoName/pull-requests/new?source=$branchName&event_source=branch_list"

Цитировать его в оболочке безопасно.

printf -v url '%q' "$var"

Теперь попробуйте ввести команду .

open -a "Google Chrome" "$url"
...