读取命令选项在旧操作系统Linux上不可用。。允许默认值的其他命令是什么

读取命令选项在旧操作系统Linux上不可用。。允许默认值的其他命令是什么,linux,bash,shell,input,Linux,Bash,Shell,Input,我们有超过500台linux主机,运行各种操作系统; 用默认输入提示用户的read命令不适用于soem,而适用于其他soem 是否有一个命令,我可以在所有这些不同的操作系统中使用,以允许默认输入 2.6.32-504.el6.x86_64 = Works 2.6.18-348.6.1.el5 = Does not work 旧版本中没有I选项。 读取[-ers][u fd][t超时][p提示符][a数组][n nchars][d delim][name…] 基本上,我想让用户在提示

我们有超过500台linux主机,运行各种操作系统; 用默认输入提示用户的read命令不适用于soem,而适用于其他soem

是否有一个命令,我可以在所有这些不同的操作系统中使用,以允许默认输入

2.6.32-504.el6.x86_64  = Works


2.6.18-348.6.1.el5   = Does not work 
旧版本中没有I选项。 读取[-ers][u fd][t超时][p提示符][a数组][n nchars][d delim][name…]

基本上,我想让用户在提示时选择覆盖默认值,但如果他们不这样做,我想使用默认值

example:

read -e -p "Enter Your Name:" -i "Allesandra" N
你们能提供一个替代方案吗?
谢谢

您的情况正是POSIX标准存在的原因;坚持下去。根据操作系统的不同,
bash
甚至可能不是默认的shell

printf 'Enter Your Name, or leave blank for default:\n'
printf '(Allesandra): '
read name && [ -n "$name" ] || name=Allesandra

大多数Shell中一个未充分利用的特性是,如果变量未设置,则能够为其提供默认值

read -e -p "Enter Your Name:" N
: ${N:=default}
然而,如果你有
阅读-i…
在不支持
的版本上-i
您将得到一个错误


IHTH是一个内置的shell。它与内核无关。如果您必须处理的
bash
版本早于4.0,那么您不能使用
-i
,您必须在提示符中或提示符前的一行显示默认值,并手动检查是否为空,然后将其替换为默认值。Thx两者都。。是的,你们都是对的。。我意识到--我想知道是否还有其他编码方法,这样它就不适合我使用哪种方法?您可以编写自己的
read
替换函数,测试内置的
-I
支持,并根据需要解决它,但仅此而已。