我有一个python脚本,我在函数调用中包装。该脚本为scr
,函数为function scr {python (Join-Path $ENV:HOME "bin\scr") $args}
。当我直接调用python时,它接受stdin很好。所以echo hello | python bin\scr
有效。但是当我调用函数(echo hello | scr
)时,stdin不会从管道传递到python脚本,但似乎仍然来自终端。我怎样才能解决这个问题?
答案 0 :(得分:1)
您可以使用$input
自动变量,它表示您的函数的管道输入。此外,您可以使用$MyInvocation.ExpectingInput
找出您的函数是否期望任何管道输入。
function scr {
$MyArgs=(Join-Path $ENV:HOME "bin\scr"),$args
if($MyInvocation.ExpectingInput){
$input | python @MyArgs
}else{
python @MyArgs
}
}