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

bash script needs to read user input and use it as the argument for another command

所以我一直在网上搜索这个问题的答案,但我似乎找不到任何东西。我现在有一个 bash 脚本,我想做的一件事是提示脚本的用户输入一个句子,说明他们使用的是什么的脚本,然后传递给 CVS。如果您不知道 CVS 是什么,它只是一个脚本控制函数,我正在使用的 cvs 提交接受一个字符串并将其附加到正在提交的文件中。

我尝试过的基础知识如下:

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

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

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

谢谢:)

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

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

你的意思是

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

您没有指定变量来保存用户输入的内容,因此默认情况下您的输入最终在变量 REPLY 中。每人 bash/read:

If no names are supplied, the line read is assigned to the variable 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