我们有500多台linux主机,运行各种操作系统;用默认输入提示用户的read命令在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][名称…]
我基本上想让用户选择在提示时覆盖默认值,但如果他们不这样做,我想使用默认值
example:
read -e -p "Enter Your Name:" -i "Allesandra" N
你们能提供一个替代方案吗?感谢
大多数shell中一个未充分利用的功能是,如果变量未设置,则可以为其提供默认值。
read -e -p "Enter Your Name:" N
: ${N:=default}
但是,我希望如果您的read ... -i ...
版本不支持-i
,那么您会出现错误。
IHTH
您的情况正是POSIX标准存在的原因;坚持下去。根据操作系统的不同,bash
甚至可能不是默认的shell。
printf 'Enter Your Name, or leave blank for default:n'
printf '(Allesandra): '
read name && [ -n "$name" ] || name=Allesandra