Powershell“文件输出”的等效函数

oknwwptz  于 2023-02-19  发布在  Shell
关注(0)|答案(1)|浏览(143)

echo "C:\tools\somepath\toabinary\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
我如何使用Bash实现这个Powershell命令给出的结果?不幸的是,我在网上几乎找不到什么。
这是为了在Github操作中使用。

wd2eg0qa

wd2eg0qa1#

Bash和POSIX兼容的shell通常没有显式的 command 来将stdout数据保存到文件中;它们有redirection operators>>>(PowerShell中也支持类似的功能),分别对应于Out-FileOut-File -Append

# Bash equivalent of your command.
echo "C:\tools\somepath\toabinary\bin" >> "$GITHUB_PATH"
  • 字符编码由LC_CTYPE设置隐含,如locale报告的那样,在现代类Unix平台上几乎总是UTF-8。
  • 与PowerShell不同,在POSIX兼容的shell中,仅shell变量和环境变量都使用 same 表示法引用,在变量名前使用符号$。因此,环境变量GITHUB_PATH必须作为$GITHUB_PATH引用。
  • 正如tripleee所指出的--与PowerShell不同--最好用双引号("...")将变量括起来,以确保它们的值按原样使用,而不受所谓的shell expansions(特别是word splitting)的约束,在shell expansions中,带有嵌入空格的无引号值成为 * 多个 * 参数。

请注意POSIX兼容shell和PowerShell在数据流经管道(|)/使用>>>重定向方面的根本区别:

  • 在与POSIX兼容的shell中,这些操作符充当 * 原始字节管道 *,数据可以表示也可以不表示 * 文本 *。
  • 在PowerShell中,它们是 *.NET对象 * 的管道,在 * 外部程序 * 的情况下,这总是意味着解释为 * 文本行 *,从PowerShell 7.3.2开始-请参阅this answer了解背景信息。

相关问题