我正在尝试使用以下脚本多次从终端向文本文件发送行。在第二行写入第一行及其描述后,脚本会询问用户是否要输入另一行。如果是,那么用户写第3行,第4行,依此类推......
我的问题是在第二行之后,即从第3行开始,脚本只写第一个单词,而不是完整的句子。我该如何解决这个问题?
function ml() {
echo $@ >> $HOME/path/to/file/filename
echo -n "Enter description and press [ENTER]: "
read description
echo -e '\n[\t]' $description >> $HOME/path/to/file/myfile
while true
do
read -p "Add another line?y?n" -n 1 -r
echo -e "\n"
if [[ $REPLY =~ ^[Yy]$ ]]
then
echo -n "Enter another line and press [ENTER]: "
read -a meaning
echo -e "[\t]" $meaning >> $HOME/path/to/file/myfile
else
break
fi
done
echo % >> $HOME/path/to/file/myfile
}
我还希望在代码
中进行另一次修改read -p "Add another line?y?n" -n 1 -r
而不是询问y / n输入,可以这样做,插入前两行后,每个ENTER将要求另一行输入并按ESCAPE将终止脚本?
答案 0 :(得分:1)
这是因为在您第二次调用read
时,您正在使用-a
参数:
将单词分配给数组变量aname的顺序索引,从0开始。在分配任何新值之前,将取消设置aname。其他名称参数将被忽略。
这似乎不是你想要的。