bash脚本需要读取用户输入并将其用作另一个命令的参数

时间:2015-08-28 07:43:02

标签: linux string bash prompt

所以我一直在网上寻找答案,我似乎找不到任何东西。我有一个我现在正在使用的bash脚本,我想做的其中一件事就是提示脚本的用户输入一个句子来说明他们是什么样的。我使用了脚本,然后传递给CVS。如果您不知道CVS是什么,它只是一个脚本控制功能,我使用的cvs提交需要一个字符串并将其附加到文件'承诺。

我尝试的基本内容如下:

read -p "Please enter what you did here: "
echo
cvs commit -m '$READ' filename.txt

问题在于,当我输入一个包含多个单词的字符串时,read会将其解释为传递多个参数,并将每个单词存储为单个变量,这会破坏我的cvs函数。

基本上,我如何提示字符串输入并将该输入用作一个变量?

谢谢:)

3 个答案:

答案 0 :(得分:2)

您尚未指定用于保存用户输入内容的变量,因此默认情况下,您的输入最终会出现在变量REPLY中。按男人bash /读:

  

如果未提供名称,则将读取的行分配给变量   REPLY

如果不改变您的阅读声明,您可以这样做:

echo
cvs commit -m "$REPLY" filename.txt    # double-quote or kill expansion

您阅读的正确格式为:

read -p "Please enter what you did here: " SOMEVAR

无论用户输入什么,无论是否有空格,都会以SOMEVAR结尾。然后你可以:

echo
cvs commit -m "$SOMEVAR" filename.txt    # double-quote or kill expansion

答案 1 :(得分:1)

你的意思是

read -ep "Please enter what you did here: "
echo
cvs commit -m "$REPLY" filename.txt

答案 2 :(得分:0)

您可以使用读取功能的命令参数-a array

read -a arr -p "Hello "
echo ${arr[*]}