0

我正在尝试使用以下脚本多次将行从终端发送到文本文件。在第二行写下第一行及其描述后,脚本会询问用户是否要输入另一行。如果是,则用户写入第 3 行、第 4 行,依此类推...

我的问题是在第 2 行之后,即从第 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 将终止脚本?

4

1 回答 1

1

这是因为在您第二次调用 时read,您使用的-a参数是:

单词被分配给数组变量 aname 的顺序索引,从 0 开始。在分配任何新值之前取消设置 aname。其他名称参数被忽略。

这似乎不是你想要的。

于 2013-07-04T04:35:26.083 回答