【发布时间】:2019-03-08 15:12:21
【问题描述】:
我想测试一个我正在编写的 powershell 脚本,其中包含一个我不希望实际发生的带有副作用的命令。
在 bash 中,我可以写
> DO_OR_ECHO=$([ "$MY_DEBUG_FLAG" ] && echo 'echo' || echo)
> $DO_OR_ECHO my_dangerous_command args
但尝试在 powershell 中执行类似的构造似乎不起作用,即使我对其进行硬编码。
> $DO_OR_ECHO='echo'
> $DO_OR_ECHO my_dangerous_command args
Unexpected token 'my_dangerous_command' in expression or statement.
我做错了什么?有更好的方法吗?我想要一个基于布尔值执行命令或简单打印命令的构造(以便我可以看到 将执行什么)。
【问题讨论】:
-
不要尝试在 $Var 中运行 cmdlet,而只需使用
if结构来测试触发器 $Var 的值。 -
试试 'cmd /c echo'。
-
您实际上想要完成什么?在 powershell 中可能有比依赖深奥的语法/行为更好的方法。
-
看起来您缺少调用运算符 (&)
-
我不想只使用 if ,因为我不想不运行它,我还希望回显 would 已经运行的内容。这也是为什么 $DO_OR_ECHO 和 my_dangerous_command 不会做我想做的事情的原因。
标签: powershell