使用Bash Script在同一行上读取输入两次(没有换行符)

时间:2017-02-02 01:27:00

标签: bash shell

我试图从bash脚本在同一行读取两次用户输入。它根本不是很有用,但它很漂亮,我正在努力实现这一目标。

我的代码的相关部分如下:

#!/usr/bin/env bash

FROM_YEAR=2015
TO_YEAR=2017
read -e -p "Backup from " -i "${FROM_YEAR}" FROM_YEAR
read -e -p " to "         -i "${TO_YEAR}"   TO_YEAR

使用此代码,我得到以下信息:

Backup from 2015 *press enter*
 to 2017

但我希望输出如下:

Backup from 2015 *press enter* to 2017

当然,我想要一个没有标记的输出(*press enter*)。

如何使用bash脚本实现这一目标?

谢谢:)

3 个答案:

答案 0 :(得分:0)

FROM_YEAR=2015 TO_YEAR=2017
read -p "Backup from ${FROM_YEAR} to ${TO_YEAR}: " FROM_YEAR TO_YEAR
echo $FROM_YEAR $TO_YEAR 

输出,如果用户输入" 3 4":

Backup from 2015 to 2017: 3 4
3 4

答案 1 :(得分:0)

总有解决方法,但它们并不总是可移植的。这很有可能会起作用:

#!/usr/bin/bash

FROM_YEAR=2015
TO_YEAR=2017
read -e -p "Backup from " -i "${FROM_YEAR}" FROM_YEAR 
printf '\033[1A\033[16C'
read -e -p " to " -i "${TO_YEAR}" TO_YEAR

请注意,这是一个糟糕的黑客,如果在编辑后FROM_YEAR没有正好4位数,那么结果就不会很好。

答案 2 :(得分:0)

我猜,在初始显示之前,您可以clear屏幕,然​​后在用户按下[Enter]后再次clear屏幕,以便您可以重新显示所需内容。

我有bash脚本,菜单就是这样的。你必须重新显示所有内容,但是为了简单的需要,它可以完成工作(当然,如果你不介意清除屏幕)。