PowerShell 上的彩色 ghci 输出
Colored ghci output on PowerShell
前段时间,我偶然发现了this。但是,由于我使用的是 Windows,因此无法 运行。因此,我决定创建它的 .ps1
版本,这样我就可以在 PowerShell 中 运行 它。但是我一直收到以下错误:
Line |
25 | Invoke-Expression (Get-Command ghci).Path $args 2>&1 | `
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| A positional parameter cannot be found that accepts argument 'System.Object[]'.
我的完整代码可以找到here具体错误所在的部分如下:
Invoke-Expression (Get-Command ghci).Path $args 2>&1 | `
sed "$load_failed `
$load_done `
$no_instance `
$interactive `
$double_colon `
$right_arrow `
$right_arrow2 `
$parenthesis `
$left_blacket `
$right_blacket `
$double_colon `
$calc_operators `
$string `
$char"
另外,我尝试转换的原始代码,写在shell script(.sh)中,如下
exec "`which ghc`" --interactive ${1+"$@"} 2>&1 |\
sed "$load_failed\
$load_done\
$no_instance\
$interactive\
$double_colon\
$right_arrow\
$right_arrow2\
$parenthesis\
$left_blacket\
$right_blacket\
$double_colon\
$calc_operators\
$string\
$char"
我想澄清一下,我已经在我的 PowerShell 上安装了 sed
。提前谢谢你。
Update
由于 建议使用 @args
而不是 $args
,我已经设法解决了前面提到的错误。但是,我似乎收到另一个错误,如下所示:
sed: 13: "s/^Failed, modules load ...": unbalanced brackets ([])
显然我的代码的以下部分似乎有错误:
$load_failed="s/^Failed, modules loaded:/$RED&$RESET/;"
$load_done="s/done./$GREEN&$RESET/g;"
$double_colon="s/::/$PURPLE&$RESET/g;"
$right_arrow="s/\->/$PURPLE&$RESET/g;"
$right_arrow2="s/=>/$PURPLE&$RESET/g;"
$calc_operators="s/[+\-\/*]/$PURPLE&$RESET/g;"
$char="s/'\?.'/$RED&$RESET/g;"
$string="s/`"[^`"]*`"/$RED&$RESET/g;"
$parenthesis="s/[{}()]/$BLUE&$RESET/g;"
$left_blacket="s/\[\([^09]\)/$BLUE[$RESET/g;"
$right_blacket="s/\]/$BLUE&$RESET/g;"
$no_instance="s/^\s*No instance/$RED&$RESET/g;"
$interactive="s/^<[^>]*>/$RED&$RESET/g;"
更具体地说:
$string="s/`"[^`"]*`"/$RED&$RESET/g;"
写在shell脚本中的原代码是:
string="s/\"[^\"]*\"/$RED&$RESET/g;"
我真的很困惑不平衡的括号在哪里,所以任何帮助将不胜感激。
我认为您根本不需要 Invoke-Expression,只需像在命令行上一样使用 ghci,例如(假设 ghc 已添加到您的 PATH 变量)
$ret = ghci @args
似乎有两层转义正在进行。
尝试:
$string="s/`"[^\`"]*`"/$CYAN&$RESET/g;"
而不是:
$string="s/`"[^`"]*`"/$RED&$RESET/g;"
前段时间,我偶然发现了this。但是,由于我使用的是 Windows,因此无法 运行。因此,我决定创建它的 .ps1
版本,这样我就可以在 PowerShell 中 运行 它。但是我一直收到以下错误:
Line |
25 | Invoke-Expression (Get-Command ghci).Path $args 2>&1 | `
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| A positional parameter cannot be found that accepts argument 'System.Object[]'.
我的完整代码可以找到here具体错误所在的部分如下:
Invoke-Expression (Get-Command ghci).Path $args 2>&1 | `
sed "$load_failed `
$load_done `
$no_instance `
$interactive `
$double_colon `
$right_arrow `
$right_arrow2 `
$parenthesis `
$left_blacket `
$right_blacket `
$double_colon `
$calc_operators `
$string `
$char"
另外,我尝试转换的原始代码,写在shell script(.sh)中,如下
exec "`which ghc`" --interactive ${1+"$@"} 2>&1 |\
sed "$load_failed\
$load_done\
$no_instance\
$interactive\
$double_colon\
$right_arrow\
$right_arrow2\
$parenthesis\
$left_blacket\
$right_blacket\
$double_colon\
$calc_operators\
$string\
$char"
我想澄清一下,我已经在我的 PowerShell 上安装了 sed
。提前谢谢你。
Update
由于 @args
而不是 $args
,我已经设法解决了前面提到的错误。但是,我似乎收到另一个错误,如下所示:
sed: 13: "s/^Failed, modules load ...": unbalanced brackets ([])
显然我的代码的以下部分似乎有错误:
$load_failed="s/^Failed, modules loaded:/$RED&$RESET/;"
$load_done="s/done./$GREEN&$RESET/g;"
$double_colon="s/::/$PURPLE&$RESET/g;"
$right_arrow="s/\->/$PURPLE&$RESET/g;"
$right_arrow2="s/=>/$PURPLE&$RESET/g;"
$calc_operators="s/[+\-\/*]/$PURPLE&$RESET/g;"
$char="s/'\?.'/$RED&$RESET/g;"
$string="s/`"[^`"]*`"/$RED&$RESET/g;"
$parenthesis="s/[{}()]/$BLUE&$RESET/g;"
$left_blacket="s/\[\([^09]\)/$BLUE[$RESET/g;"
$right_blacket="s/\]/$BLUE&$RESET/g;"
$no_instance="s/^\s*No instance/$RED&$RESET/g;"
$interactive="s/^<[^>]*>/$RED&$RESET/g;"
更具体地说:
$string="s/`"[^`"]*`"/$RED&$RESET/g;"
写在shell脚本中的原代码是:
string="s/\"[^\"]*\"/$RED&$RESET/g;"
我真的很困惑不平衡的括号在哪里,所以任何帮助将不胜感激。
我认为您根本不需要 Invoke-Expression,只需像在命令行上一样使用 ghci,例如(假设 ghc 已添加到您的 PATH 变量)
$ret = ghci @args
似乎有两层转义正在进行。
尝试:
$string="s/`"[^\`"]*`"/$CYAN&$RESET/g;"
而不是:
$string="s/`"[^`"]*`"/$RED&$RESET/g;"