powershell 中 < EOF 的等价物是什么

powershell 中 < EOF 的等价物是什么

powershell 中相当于Linux的命令是什么:

tee file.txt <<EOF

终端<input>将会是这样的:

blah blah <\n>
beh ble <\n>
EOF

假设我复制了上面的 3 行,然后输入一些(尚不清楚的)powershell 命令。然后粘贴到终端中。(大概是在粘贴操作后,在输入结束时点击Ctrl- D。)然后希望在文件中找到所有这些,文件.txt

我想我们必须:

  1. 获取终端输入 $file 和未知命令,A
  2. 等待来自 shell 的管道输入。
  3. 等待Ctrl-D并中断(EOF)shell 输入。
  4. 使用未知命令将输入​​缓冲区传输到 $file,

编辑:2020-01-17

我意识到我错过了上面列表中我自己的观点(第 3 点)。重点是不必输入Ctrl-D而是让 shell 查找“EOF”序列,就像上面的 Linux bash 命令一样。这在 bash 脚本中一直都在执行,用于创建配置文件甚至其他 bash 脚本。这个功能在 PWSH 中也非常有用。

我能达到上述效果的方法是使用Tee 对象“这里”操作符(@'...),如下所示:

$ @"
>> Even if you have not created a profile,
>> the path of the profile file is:
>> $profile.
>> "@ | Tee-Object -FilePath "test.txt" -Append
Even if you have not created a profile,
the path of the profile file is:
C:\Users\XXXX\Documents\PowerShell\Microsoft.PowerShell_profile.ps1.

但我想要球座左边和这是在右侧,作为命令的最后一部分。这实际上完成了等效命令。这里是字符串在 Linux 中很好地解释了这一点回答

答案1

字符串可以包含换行符,为什么不使用它呢?

PS D:\> echo "blah blah
>> beh ble" | tee file.txt
blah blah
beh ble
PS D:\> cat .\file.txt
blah blah
beh ble

因此,如果命令是从另一个应用程序复制的,则"先键入,粘贴字符串,然后用另一个关闭它"。但为什么不直接打开文本编辑器进行粘贴呢?

如果字符串中可以有引号,则使用此处字符串

PS D:\> echo @"
>> here string
>>     with embedded quote '"'
>> "@
here string
    with embedded quote '"'

相关内容