gpt4 book ai didi

linux - 读取命令未从终端获取输入

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

我不知道 read 没有从终端获取输入是否奇怪。

在源代码制作过程中使用的配置脚本应该要求用户提供输入以选择数据库类型,MYSQL 或 ORACLE(代码如下)。

MYSQLLIBPATH="/usr/lib/mysql"
echo "Enter DataBase-Type 1-ORACLE, 2-MySQL (default MySQL):"
read in
echo $? >> /tmp/error.log
if test -z "$in" -o "$in" = "2"
then
DATABASE=-DDB_MYSQL
if true; then
MYSQL_TRUE=
MYSQL_FALSE='#'
else
MYSQL_TRUE='#'
MYSQL_FALSE=
fi

echo "Enter Mysql Library Path: (eg: $MYSQLLIBPATH (default))"
read in
echo $? >> /tmp/error.log
if test -n "$in"
then
MYSQLLIBPATH=`echo $in`
fi
echo "Mysql Lib path is $MYSQLLIBPATH"
else
if false; then
MYSQL_TRUE=
MYSQL_FALSE='#'
else
MYSQL_TRUE='#'
MYSQL_FALSE=
fi

DATABASE=-DDB_ORACLE
LD_PATH=
fi

但是,读取命令并不要求用户输入。它无法从标准输入中获取输入。

When I checked the status of the command in the error.log it was showing
1
1

谁能说出为什么 read 无法从 stdin 获取输入。是否有任何内置变量可以阻止读取输入?

最佳答案

最有可能的 read 使用从已达到 EOF 的文件重定向的标准输入执行。如果以上不是您的全部配置代码,请检查是否没有输入重定向。上面的代码是否可以成为通过管道或文件的某些输入调用的函数的一部分?否则检查配置是如何执行的——是否有任何重定向?

否则,通用建议适用:尝试简化和剥离您的代码,直到很明显发生了什么。

顺便说一句,如果你想让你的程序打包用于分发,那么让配置交互不是一个好主意 - 控制交互程序的执行并不容易。考虑添加对通过命令行选项提供参数的支持。

关于linux - 读取命令未从终端获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17895173/

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