gpt4 book ai didi

linux - 从函数调用时无法读取输入

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:45 24 4
gpt4 key购买 nike

您将在下面找到一个简单的代码。如果读取输入是 Y,我正在调用函数输入但是输入函数中的读取命令永远不会执行。

#!/bin/bash
input() {
read -p "Press any key to continue..." # read input (this part never executed)
}

mg() # prompt user for y=true, n=false
{
[ $FORCE ] && echo>&2 "$* (forced)" && return
while read<&2 -p "$* (Y/N)? [Y] " YN
do
[ -z "$YN" -o "$YN" = Y ] && return
[ "$YN" = N ] && return 1
done
err "failed to read from YN $*"
}


if mg "Enter Input?"
then in="yes" | input # call function input if mg return Y
else in="no"
fi

最佳答案

input 的调用正在从参数分配中获取其标准输出。一旦分配完成,它的(不存在的)标准输出就会关闭,read 将其解释为导致 read 返回的 EOF。

改用分号。

if mg "Enter Input?"
then in="yes"; input
else in="no"
fi

(删除管道还允许在当前 shell 中分配 in,而不是在管道诱导的子 shell 中。)

关于linux - 从函数调用时无法读取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17833279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com