在 PowerShell 中转义单引号
Escape single quotes in PowerShell
我正在尝试构建类似于以下内容的 SharePoint 2010 listdata.svc
查询:
http://server/FooList/_vti_bin/listdata.svc/FooList?$select=Title,Id,OwnerId,Status&$filter=(OwnerId eq 1234 and Status eq 'Ready')
单引号不起作用:
$url = $url + '&$filter=(OwnerId eq 1234 and Status eq 'Ready')'
也不用反引号转义它们:
$url = $url + '&$filter=(OwnerId eq 1234 and Status eq `'Ready`')'
如果我使用双引号,$filter
将替换为零长度字符串(它不是脚本中的变量):
$url = $url + "&$filter=(OwnerId eq 1234 and Status eq 'Ready')"
转义单引号的正确方法是什么?
使用单引号字符串文字时需要双引号:
'&$filter=(OwnerId eq 1234 and Status eq ''Ready'')'
^^ ^^
演示:
PS > '&$filter=(OwnerId eq 1234 and Status eq ''Ready'')'
&$filter=(OwnerId eq 1234 and Status eq 'Ready')
PS >
使用反引号仅适用于双引号字符串文字(因为它们处理转义序列),但您还需要转义所有其他特殊字符(例如变量名中的 $
):
PS > "&`$filter=(OwnerId eq 1234 and Status eq `"Ready`")"
&$filter=(OwnerId eq 1234 and Status eq "Ready")
PS >
但在单引号字符串文字中,`
被视为文字反引号。
我正在尝试构建类似于以下内容的 SharePoint 2010 listdata.svc
查询:
http://server/FooList/_vti_bin/listdata.svc/FooList?$select=Title,Id,OwnerId,Status&$filter=(OwnerId eq 1234 and Status eq 'Ready')
单引号不起作用:
$url = $url + '&$filter=(OwnerId eq 1234 and Status eq 'Ready')'
也不用反引号转义它们:
$url = $url + '&$filter=(OwnerId eq 1234 and Status eq `'Ready`')'
如果我使用双引号,$filter
将替换为零长度字符串(它不是脚本中的变量):
$url = $url + "&$filter=(OwnerId eq 1234 and Status eq 'Ready')"
转义单引号的正确方法是什么?
使用单引号字符串文字时需要双引号:
'&$filter=(OwnerId eq 1234 and Status eq ''Ready'')'
^^ ^^
演示:
PS > '&$filter=(OwnerId eq 1234 and Status eq ''Ready'')'
&$filter=(OwnerId eq 1234 and Status eq 'Ready')
PS >
使用反引号仅适用于双引号字符串文字(因为它们处理转义序列),但您还需要转义所有其他特殊字符(例如变量名中的 $
):
PS > "&`$filter=(OwnerId eq 1234 and Status eq `"Ready`")"
&$filter=(OwnerId eq 1234 and Status eq "Ready")
PS >
但在单引号字符串文字中,`
被视为文字反引号。