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
所以我一直在网上搜索这个问题的答案,但我似乎找不到任何东西。我现在有一个 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