关于shell:Bash脚本卷曲

Bash script curl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash

read -p 'Username: ' uservar
read -p 'Password: ' passvar

cacheVariable1=""Content-Type:application/json""
cacheVariable2=""Cache-Control:no-cache""
parametersVariable="'{"username":"$uservar","password":"$passvar"}'"
echo $parametersVariable
echo $cacheVariable1 $cacheVariable2
websiteVariable="https://example.com/session"

echo $websiteVariable

entireURL="curl -X POST -H"$cacheVariable1" -H"$cacheVariable2" -d"$parametersVariable""$websiteVariable""

echo"Entire URL IS: $entireURL"

result=`$entireURL`


echo"$result"

我想要这样的脚本:curl-x post-h"content-type:application/json"-h"cache-control:no-cache"-d'"username":"abc@abc.com","password":"password123""https://example.com/session"

整个URL是:curl-h"content-type:application/json"-h"cache-control:no-cache"-d'"username":"zzzzzz","password":"azzzsass""https://cloud.tenable.com/session

但它不会在bash中执行。它给了我这个错误:

1
{"statusCode":400,"error":"Bad Request","message":"child "username" fails because ["username" is required]","validation":{"source":"payload","keys":["username"]}}

但它不起作用。有人能帮我吗?

更新

我自己解决的。除了作为eval$entireurl执行之外,一切都是正确的。因为一个嵌入在括号中的命令作为子shell运行,所以我的环境变量丢失了。

  • 请看一看:shellcheck.net
  • 赛勒斯i检查",但我不知道我在哪里去了。你能帮助吗?
  • 湖bashfaq # 50:我想把一个命令变量的复杂情况,但总是失败!。总结:Don’t put命令在执行变量,只是他们的工作。(输出到变量捕捉的是好的,但。)
  • 所以我想你gordondavisson"的方式,但它没有工作。我为什么我去喜欢这个。它看起来像有一些问题在一个卷曲的方式把bash脚本,但我不知道是什么。
  • 我想有一些问题与嵌套在-d参数报价,但我想你有一个湖的特异性。在任何案例中,把它不会帮助任何一个变量,它只是添加另一个层次的混乱。我的另一个问题与非单调变版本。
  • 请把X邮件…
  • 我不明白为什么人的问题是给负声誉的不提供任何输入。在这个问题的错误是什么?我把我的努力已经在它和我问的问题。谢谢@ danielstenberg for i编辑我的答案代码,但它不安静,似乎工作。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash

read -p 'Username: ' uservar
read -p 'Password: ' passvar

cacheVariable1=""Content-Type:application/json""
cacheVariable2=""Cache-Control:no-cache""
parametersVariable="'{"username":"$uservar","password":"$passvar"}'"
echo $parametersVariable
echo $cacheVariable1 $cacheVariable2
websiteVariable="https://example.com/session"

echo $websiteVariable

entireURL="curl -X POST -H"$cacheVariable1" -H"$cacheVariable2" -d"$parametersVariable""$websiteVariable""

echo"Entire URL IS: $entireURL"

result=`$entireURL`

eval $entireURL

这个很好用!