【问题标题】:Similar functionality to `...` in linux shell in Windows与 Windows 中 linux shell 中的 `...` 类似的功能
【发布时间】:2015-06-14 21:20:22
【问题描述】:

在 Linux / Unix shell 中有这样的语法,你可以在其中执行一个命令,在这个命令中是其他命令,它们首先被执行然后被替换,所以像这样:

gcc main.c `pkg-config --cflags --libs gtk+-3.0`

这里首先执行pkg-.....,然后用其输出替换,然后执行整个命令

Windows PowerShell 中是否有一些类似的功能(如果可能的话,我有时也会使用 cmd)

我所知道的是,在 PowerShell 中您可以编写如下内容:

gcc main.c (pkg-config --cflags --libs gtk+-3.0)

但是这样做的问题是辅助命令的输出像单个连续字符串一样传递,所以像这样的“-mms-bitfields .....”并且 gcc 不会将其识别为单独的命令。

【问题讨论】:

  • 为什么这个问题被标记为 c?
  • 好吧,因为这是任何 Windows 上的 c 程序员都想知道的问题,至少从我的角度来看。如果你愿意,我可以删除它。
  • 据我所知,使用 PowerShell 或任何具有与 *nix shell 相同功能的 windows shell 真的很难,主要是因为 *nix 世界中有很多程序非常好让生活更轻松的事情,当我使用 windows shell 时,我觉得我的手指很重,但这是我的观点,可能会很错误。

标签: windows powershell


【解决方案1】:

您可以使用-split operator:

gcc main.c ((pkg-config --cflags --libs gtk+-3.0) -split " ")

或者可能

gcc main.c ((pkg-config --cflags --libs gtk+-3.0) -split " +")

在输出中的参数之间有多个空格的情况下避免空参数(尽管我不认为pkg-config 这样做)。

-split 运算符完全按照它在罐子上所说的做:它在给定模式出现时拆分给定的内容。也就是说,

PS C:\> "foo bar baz" -split " "
foo
bar
baz

【讨论】:

  • 谢谢,这正是我想要的。 CMD 有什么类似的吗?
  • 恐怕不是我的头顶。我尽量不在cmd中做那种事情。令人高兴的是,随着 Windows XP 的消亡,您可以依赖 Powershell 的存在。
  • 好的,我想我知道你的意思了。无论如何,再次感谢您的帮助。
  • this question中有一个cmd的解决方法;不过,如果输出以换行符结尾,它确实会给我一个额外的空参数。
  • 感谢您的帮助,但也许我真的应该按照您的建议完全迁移到 PowerShell。
猜你喜欢
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 2019-06-08
  • 2011-04-01
  • 2014-11-27
  • 2022-01-23
  • 1970-01-01
相关资源
最近更新 更多