如何使用动态数量的参数创建 PowerShell 函数,每个参数都将传递给另一个命令?

肯尼83

标题是不言自明的。这是我迄今为止尝试过的:

function Git {
    $cmd = $args[0]
    for ($i = 1; $i -lt $args.count; $i++) {
        $cmd = $cmd + " " + $args[$i]
    }
    echo $(wsl git $cmd)
}

然而调用 eggit clone <clone URL>给了我git: 'clone <clone URL>' is not a git command. See 'git --help'.所以看起来好像 PowerShell 正在将一个带引号的字符串传递给git命令,这导致它失败......或者我的代码是否存在其他一些我遗漏的问题?

希望这些信息足以让任何 PowerShell 专家为我指明正确的方向……尽管要了解我的实际核心问题以及我为尝试修复它所做的工作,请继续阅读……

核心问题/现有解决方案

我正在尝试将git在 PowerShell 或 CMD 窗口中键入的所有命令重定向到 WSL,因为这是我唯一git安装的地方,我想保持这种方式当我已经在 WSL 中安装了我需要的所有东西时,我认为安装适用于 Windows 的 Git 或任何其他大型第三方工具是没有意义的。

唯一的缺点是:

  1. 对于每天多次键入此类命令的人来说wsl git...,每次我想克隆、拉、推等时都打字变得很麻烦而且很快就会很累
  2. 它还破坏了我的 Windows VS Code 安装中的 Git 扩展,没有安装 Git for Windows。

对于这些问题,我尝试了两种现有的解决方案,即https://github.com/hangxingliu/wslgithttps://github.com/andy-5/wslgit,但它们都给了我相同的错误消息:

PS C:\Users\Kenny> git --version
/usr/bin/wslgit.sh: line 83: cd: C:\Users\Kenny: No such file or directory
fatal: can not cd to C:\Users\Kenny (C:\Users\Kenny)

有关更多信息,另请参阅前 repo 中这个看似相关的 GitHub 问题

我正在运行 Windows 10.0.19042.0,即 Windows 10 Home 的最新稳定版本。此版本或先前版本中肯定有一些重大更改,因为前 repo 的所有者在链接问题页面上的评论中引用了这一点:

我已经更新了 wslgit.dev.sh 一点。首先mount -t drvfs=> 什么都不返回,它发生在更新到 2004 年之后。所以我更新了 wslgit.dev.sh 文件......现在它对我有用。之后,生成新的wslgit.sh并更改旧的。

我已经尝试过他们的建议,但它似乎对我或问题的 OP 都没有帮助。因此,我深入研究了编写自定义 PowerShell 函数以实现类似结果的整个兔子洞。

我现在已经浪费了一整天来尝试解决这个看似简单的问题(整个上午都在尝试使现有解决方案正常工作,其余时间都在 PowerShell 解决方法上)。因此,我非常感谢:

  1. 对现有解决方案提供给我的错误消息的解释和修复,或
  2. 一个可以执行我想要的工作的 PowerShell 函数,而无需向已经过长的命令 (IMO) 添加详细的参数名称或其他任何内容。
NotTheDr01ds

args直接传递数组似乎对我有用,如:

function Git {
    echo $(wsl git $args)
}

至少对于您提到的简单克隆案例(和一个简单的Git status)。

虽然听起来这主要是您所需要的,但未来的读者应该意识到,对于更复杂的用例,这可能会失败,例如需要用户输入的任何 git 命令、使用本地 Windows 路径作为目标,或者在 UNC 路径上(包括\\WSL$\)在执行时。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将参数从一个Powershell函数传递给另一个

来自分类Dev

将参数从另一个 powershell 脚本传递给一个 powershell 脚本

来自分类Dev

如何将switch参数传递给另一个PowerShell脚本?

来自分类Dev

如何让 PowerShell 逐行读取并将其传递给另一个命令?

来自分类Dev

如何将 Powershell 命令的输出用作另一个 Powershell 命令的参数?

来自分类Dev

如何将函数的所有参数传递给另一个命令?

来自分类Java

将参数传递给另一个函数

来自分类Dev

将命名参数从一个Powershell脚本传递到另一个

来自分类Dev

在命令行开关的另一个变量/参数中使用 Powershell 变量

来自分类Dev

如何将可变函数参数作为参数传递给另一个函数?

来自分类Dev

如何将可变参数函数的其余参数传递给另一个函数?

来自分类Dev

此函数如何将参数传递给另一个内部函数参数

来自分类Dev

如何将参数传递给作为另一个函数参数的函数

来自分类Dev

将具有不同数量参数的函数传递给另一个函数C ++

来自分类Dev

将具有任意数量参数的任何函数传递给另一个函数

来自分类Python

将一个函数的所有参数传递给另一个函数

来自分类Dev

将一个函数传递给另一个函数的参数

来自分类Dev

PHP 将一个函数作为参数传递给另一个函数

来自分类Dev

将一个函数传递给另一个参数未知的函数

来自分类Dev

一个函数作为参数传递给另一个函数

来自分类Dev

Python:如何使用动态数量的参数创建参数网格

来自分类Linux

如何将命令输出作为多个参数传递给另一个命令

来自分类Dev

如何将终端命令作为参数传递给另一个命令

来自分类Dev

将函数参数动态传递给另一个函数

来自分类Dev

如何在PowerShell中将参数从一个函数转发到另一个函数

来自分类Dev

使用模板可变参数将多个参数传递给另一个函数

来自分类Dev

如何使用 rebol/red bind 将块参数传递给另一个函数?

来自分类Dev

如何使用参数将powershell脚本调用到另一个powershell脚本?

来自分类Dev

从作为参数传递给JavaScript的另一个函数的函数中提取参数

Related 相关文章

  1. 1

    将参数从一个Powershell函数传递给另一个

  2. 2

    将参数从另一个 powershell 脚本传递给一个 powershell 脚本

  3. 3

    如何将switch参数传递给另一个PowerShell脚本?

  4. 4

    如何让 PowerShell 逐行读取并将其传递给另一个命令?

  5. 5

    如何将 Powershell 命令的输出用作另一个 Powershell 命令的参数?

  6. 6

    如何将函数的所有参数传递给另一个命令?

  7. 7

    将参数传递给另一个函数

  8. 8

    将命名参数从一个Powershell脚本传递到另一个

  9. 9

    在命令行开关的另一个变量/参数中使用 Powershell 变量

  10. 10

    如何将可变函数参数作为参数传递给另一个函数?

  11. 11

    如何将可变参数函数的其余参数传递给另一个函数?

  12. 12

    此函数如何将参数传递给另一个内部函数参数

  13. 13

    如何将参数传递给作为另一个函数参数的函数

  14. 14

    将具有不同数量参数的函数传递给另一个函数C ++

  15. 15

    将具有任意数量参数的任何函数传递给另一个函数

  16. 16

    将一个函数的所有参数传递给另一个函数

  17. 17

    将一个函数传递给另一个函数的参数

  18. 18

    PHP 将一个函数作为参数传递给另一个函数

  19. 19

    将一个函数传递给另一个参数未知的函数

  20. 20

    一个函数作为参数传递给另一个函数

  21. 21

    Python:如何使用动态数量的参数创建参数网格

  22. 22

    如何将命令输出作为多个参数传递给另一个命令

  23. 23

    如何将终端命令作为参数传递给另一个命令

  24. 24

    将函数参数动态传递给另一个函数

  25. 25

    如何在PowerShell中将参数从一个函数转发到另一个函数

  26. 26

    使用模板可变参数将多个参数传递给另一个函数

  27. 27

    如何使用 rebol/red bind 将块参数传递给另一个函数?

  28. 28

    如何使用参数将powershell脚本调用到另一个powershell脚本?

  29. 29

    从作为参数传递给JavaScript的另一个函数的函数中提取参数

热门标签

归档