句子作为用户输入 - 多次从终端 - bash脚本

时间:2013-07-04 01:56:15

标签: bash

我正在尝试使用以下脚本多次从终端向文本文件发送行。在第二行写入第一行及其描述后,脚本会询问用户是否要输入另一行。如果是,那么用户写第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将终止脚本?

1 个答案:

答案 0 :(得分:1)

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

  

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

这似乎不是你想要的。