繁体   English   中英

Powershell中字符串中变量的替换成员

[英]Substitute member of variable within string in Powershell

我在PowerShell脚本中有以下字符串表达式:

"select count(*) cnt from ${schema}.${table} where ${col.column_name} is null"

模式和表分别解析为$ schema和$ table的值。 但是,为$ {col.column_name}提供了一个空字符串。 如何作为字符串替换的一部分插入变量的成员?

怎么样:

"select count(*) cnt from $schema.$table where $($col.column_name) is null"

我认为你遇到的问题主要是语法相关的。 如果你有一个名为$ foo的变量,$ {foo}引用相同的变量。 因此,sql字符串中的$ {table}和$ {schema}引用可以正常工作。

问题在于$ {col.column_name}。 您的变量(我假设)称为$ col,并且具有名为column_name的成员。 正如Robert和Steven在他们的答案中指出的那样,要引用它,你应该使用$($ col.column_name)。 通常,$(表达式)将替换为表达式的值。

允许变量名称括号的原因是变量的名称中可能包含不常见的字符。 我建议不要使用$ {}语法(除非你有令人信服的理由),并将其替换为变量的直接$ var引用和字符串中成员引用的$($ var.member)。

一种方法是:

"select count(*) cnt from $schema.$table where $($col.column_name) is null"

另一种选择是

"select count(*) cnt from {0}.{1} where {2} is null" -f $schema, $table, $col.column_name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM