我正在运行以下查询
aws dynamodb query `
--table-name user`
--key-condition-expression "datecreated = :d" `
--expression-attribute-values "{ ':d': { 'S': '2018-08-15' } }" --endpoint-url http://localhost:8000
字符串
dynamodb知道什么是双引号吗?
1.我试过用双引号交换单引号。
1.到处使用双引号
1.将单引号和双引号加倍
1.使用斜杠
1.完全删除单引号
4条答案
按热度按时间z0qdvdin1#
有两个迫在眉睫的问题:
*
'
(单引号)不是JSON中的有效字符串分隔符;您必须使用"
(双引号):\
-转义参数-内部"
字符 , 即使不需要 *。\
转义的替代方法,您可以使用**Native
module中的PSv 3 +ie
helper函数**(在PSv 5+中,使用PowerShell Gallery中的Install-Module Native
进行安装),它在内部补偿所有中断的行为,并允许按预期传递参数;要使用它,只需将ie
添加到您的调用前面即可;例如:ie aws dynamodb query ...
个因此,试试这个;注意如何将**
'...'
用于 * 外 * 引号**(PowerShell在后台将其转换为双引号),以便不必将"
转义为字符串内的``"--请注意,字符串内容随后将被 * 照字面意义 * 处理; 但是,在PowerShell 7.2中调用外部程序(如
aws)时,* 始终 * 需要
`-转义:字符串
如果确实需要**
"..."
作为外引号以便使用字符串扩展**(插值),也就是说,为了嵌入变量引用和表达式,事情变得更糟糕,因为您需要应用 * 两种 * 转义:首先是``",以满足PowerShell的语法要求,然后是
`,以确保生成的嵌入式"
正确地传递到目标程序:型
here-string可以减轻这种痛苦,但请注意,它总是会使命令 * 多行 * -而且对
\
的需要-转义仍然适用(请注意,"@
,结束分隔符不仅必须在它自己的行上,而且必须在该行的 * 最开始 *):型
vxqlmq5t2#
我刚才在使用Key-Condition-Expression参数时遇到了同样的问题
字符串
这将给予
x1c 0d1x的数据
为了解决这个问题,就只好把命令改为(注意
\"
)型
的
6mzjoqzu3#
当我想创建一个接受参数的bash脚本时,我遇到了这个问题,这样我就可以用各种输入进行查询。
避免这个问题的一个方法是使用临时json文件。
在bash脚本中:
字符串
如果您提供
2021-01-31
作为第一个输入,则会创建以下文件:型
然后在bash脚本中:
型
kkih6yb84#
令人沮丧的是,这并没有更简单地工作。
我总是将对象双重转换为json,像这样:
字符串
这样就得到了
$cliValue
的形式:型