2015-08-28 21 views
0

所以我一直在尋找互聯網尋找答案,我似乎無法找到任何東西。我現在有一個bash腳本,我想要做的事情之一是提示腳本用戶輸入一個句子,說明他們已經使用腳本的內容,然後傳遞給CVS。如果你不知道CVS是什麼,它只是一個腳本控制函數,並且我正在使用的cvs提交會接收一個字符串並將其附加到提交的文件中。bash腳本需要讀取用戶輸入並將其用作另一個命令的參數

什麼心中已經嘗試的基本情況如下:

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

的問題是,當我輸入多個單詞的字符串,read解釋是傳遞爲多個參數,並存儲每個字作爲一個單獨的變量,這是打破我的CVS功能。

所以基本上,我該如何提示輸入字符串並將該輸入作爲一個變量使用?

謝謝:)

+1

'cvs commit -m「$ READ」filename.txt' should work。 – anubhava

+1

'read -p'請輸入你在這裏所做的:「-r READ' 然後,正如anubhava所說,把它放在雙引號中。 –

+0

@Ryan Cauldwell:你在哪裏填寫'$ READ'? – Cyrus

回答

2

您還沒有指定一個變量來保存用戶輸入什麼,所以默認情況下,您的輸入結束於變量REPLY。每人慶典/閱讀:

如果沒有名稱提供,讀行分配給變量 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 
0

可以使用讀取功能的命令參數-a array

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

你的意思

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

來自'help read':_如果沒有提供名稱,則讀取的行存儲在REPLY變量中._ – Cyrus

相關問題