Bash 将变量传递给字符串

Bash Passing variables to string

因此,当我在命令行上 运行 pr 命令时,我正在尝试创建一个别名以在特定 URL 中打开浏览器。

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 中的正确方法是什么?

都是数组赋值

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)

尝试用 %q 引用 url 以便它可以作为安全参数传递给 shell。

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

引用它 shell 安全。

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

现在试试你的命令。

open -a "Google Chrome" "$url"