我试图传递用户输入,例如" 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
当我期待正常的数据输出时。我的语法出了什么问题?
答案 0 :(得分:1)
您正试图在不支持它的单引号字符串中插入一个参数(请参阅这个伟大的stackoverflow answer)。
您可以使用双引号字符串:
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