我很难完成这个工作。我需要向GITLAP API提供基于我拥有的文件创建的问题。通常,文件的输出如下:
Microsoft xxx xxxxx - 远程执行代码xxxxxx- 2018年4月xxxxx更新 红帽企业xxxx - java-1.8.0-xxxxx多个xxxxxxx- RHSA-xxxxxx
到目前为止,我已经按照以下方式解决了这个问题:
while read in; do
curl --request POST --header "PRIVATE-TOKEN: xxxxxxxxxxxxx" https://gitlab.com/api/v3/projects/xxxxxx/issues?title="$in";
done < ~/input_file
现在的问题是我需要添加第二个变量,因为我需要在每个问题上引入一个描述,现在我的输入文件会改变以下内容:
Microsoft恶意软件防护 - 远程执行代码漏洞 - 2018年4月安全更新 40697
红帽企业Linux 6 - java-1.8.0-openjdk多个漏洞 - RHSA-2018:1188 40861
我想构建这样的东西:
while read in;
curl --request POST --header "PRIVATE-TOKEN: xxxxxxxxxxx" "https://gitlab.com/api/v4/projects/xxxxx/issues?title=$in&description=https://myspecialink.com/portal/notifications/show/$id";
done < ~/input_file
例如:
$in
:除了我在上面发出的粗体数字之外,一定是其他所有内容。$id
:必须只是上面粗体的数字。 有人可以帮助我指出实现这一目标的最佳方法吗?
答案 0 :(得分:1)
使用bash parameter expansion运算符来分割输入。
while read in; do
id=${in##* } # Remove everything up to last space
in=${in% *} # Remove everything from last space
curl --request POST --header "PRIVATE-TOKEN: xxxxxxxxxxx" "https://gitlab.com/api/v4/projects/xxxxx/issues?title=$in&description=https://myspecialink.com/portal/notifications/show/$id";
done