前段時間,我偶然發現了這個。但是,由于我使用的是 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[]'.
我的完整代碼可以在這里找到,錯誤所在的具體部分如下:
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腳本(.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"
我想澄清一下我已經安裝sed在我的 PowerShell 上。先感謝您。
Update
感謝@Mike Anthony建議使用@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\1/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;"
我真的很困惑不平衡的括號在哪里,所以任何幫助都將不勝感激。
uj5u.com熱心網友回復:
我認為您根本不需要 Invoke-Expression,只需像在命令列上一樣使用 ghci(假設 ghc 已添加到您的 PATH 變數中)
$ret = ghci @args
uj5u.com熱心網友回復:
似乎有兩層逃逸正在進行。
嘗試:
$string="s/`"[^\`"]*`"/$CYAN&$RESET/g;"
代替:
$string="s/`"[^`"]*`"/$RED&$RESET/g;"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/462822.html
