0

我正在尝试传递诸如“bash tesh.sh 60s”之类的用户输入,并让下面的 curl 语句获取该输入并将其用于 $args1 变量。

args1="$1"

results=$(curl -s -username:password https://URL/artifactory/api/search/aql -H "Content-Type: text/plain" -d 'items.find({"repo":{"$eq" : "generic-sgca"}}, {"created" : {"$before" : "$args1"}})' | jq -r '.results[].path'|sed 's=/api/storage==')

echo $results

但我的结果是:

parse error: Invalid numeric literal at line 1, column 7

当我期待正常的数据输出时。我的语法有什么问题?

4

1 回答 1

1

您正在尝试在不支持它的单引号字符串中插入一个参数(请参阅这个很棒的 stackoverflow答案)。
您可以使用双引号字符串:

args1="$1"

results=$(curl -s -username:password https://URL/artifactory/api/search/aql -H "Content-Type: text/plain" -d "items.find({\"repo\":{\"$eq\" : \"generic-sgca\"}}, {\"created\" : {\"$before\" : \"$args1\"}})\" | jq -r '.results[].path'|sed 's=/api/storage==')

echo $results
于 2017-12-10T12:10:37.630 回答