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"
因此,当我在命令行上 运行 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"