我正在使用" read -e -r filelocation"在bash中将文件位置读入变量。
当用户(我们使用fedora 20)用" \ a"开始输入时并按两次Tab键执行一个目录的ls(正如你可能期望的那样./,但是由于某种原因,它不是当前目录,它是当前目录parent中的另一个目录),但它显示当前行上的ls查询的第一个输出,而不是新行,它看起来像这样:
请输入此报告的位置(输入0表示退出):
然后,一旦用户输入了" \ a"然后显示两次按下标签:
audit.csv这个报告的位置(输入0到退出):\ a
有没有人知道解决这个问题的方法,还是我不得不忍受的错误?
P.S。在任何地方放置一个反斜杠,但第一个字符很好并且表现得像你期望的那样,即" / a \ pps \"然后选项卡将输入行更改为" / apps /"因此,当您按Tab键时,再次选项卡将会显示在/ apps /目录中。
编辑。 我的代码如下:
echo -n "Please enter the location of this report (type 0 to exit): "
read -e -r filelocation
答案 0 :(得分:1)
你没有提到你是如何产生这种提示的。
您应该使用以下内容:
read -p "Please enter the location of this report (type 0 to exit): " -e -r filelocation
如果你这样做了:
echo -n "Please enter the location of this report (type 0 to exit): "
read -e -r filelocation
然后你会发现你所期待的,因为readline
不会意识到有提示。