Bash脚本/函数

Bash脚本/函数,bash,git-bash,Bash,Git Bash,我正在尝试设置一个bash函数,以便键入一些参数并创建git pull请求: gpreq "<title>" "<ticketnumber>" "<release>" "<briefdescription>" 而且 gpreq() { STR="${1}"$'\n\n Ticket: https://ticketsystem.net/issues/'$"${2}"$'\n Target Release: '$"${3}"$'\n Desc

我正在尝试设置一个bash函数,以便键入一些参数并创建git pull请求:

gpreq "<title>" "<ticketnumber>" "<release>" "<briefdescription>"
而且

gpreq() {
    STR="${1}"$'\n\n Ticket: https://ticketsystem.net/issues/'$"${2}"$'\n Target Release: '$"${3}"$'\n Description: '$"${4}"
    hub pull-request -m "${STR}" ;
}

由于某些原因,换行符似乎不起作用,而是\n作为实际字符出现。任何帮助都将不胜感激

我不知道hub是什么

\n是由某个命令转换为换行符的字符

尝试直接插入换行符

hub pull-request -m "$1

 Ticket: https://ticketsystem.net/issues/$2
 Target Release: $3
 Description: $4"
或使用某些函数解释\n:

STR="$1\n\n Ticket: https://ticketsystem.net/issues/$2\n Target Release: $3\n Description: $4"
STR
hub pull-request -m "`printf "${STR}"`"

你的bash-bash版本是什么?我有bash 4.3,它完美地处理了ANSI-C引用。嗯,ANSI-C引用是在verion 2.0中添加到bash的——当然,您的bash版本比这更新。我使用的是Windows下载的Git附带的Bash,表示它是4.4.19。printf${STR}将变量保留为不带引号的,它将破坏空白格式。此外,必须注意字符串可能包含%个字符,这将导致printf错误。我不建议在没有显式格式字符串的情况下使用printf。效果很好!仅供参考,hub是git的包装器,用于GitHub。
STR="$1\n\n Ticket: https://ticketsystem.net/issues/$2\n Target Release: $3\n Description: $4"
STR
hub pull-request -m "`printf "${STR}"`"