回答
我喜歡Huang F. Lei's answer,但如果你不喜歡的文字換行,這個工程:
read -p "Please Enter a Message: `echo $'\n> '`" message
表演:
Please Enter a Message: > _
...其中_
就是光標結束。請注意,由於尾隨的換行符通常在命令替換期間被刪除,因此我後面包含了>
。但實際上,你原來的問題似乎並不希望出現這種情況提示一下,所以:
# Get a carriage return into `cr` -- there *has* to be a better way to do this
cr=`echo $'\n.'`
cr=${cr%.}
# Use it
read -p "Please Enter a Message: $cr" message
顯示
Please Enter a Message: _
必須有一個更好的辦法,但。
從bash
手冊頁:
-p prompt
Display prompt on standard error, without a trailing new-
line, before attempting to read any input. The prompt is
displayed only if input is coming from a terminal.
所以,不能與read
本身,並把\n
消息字符串在短短呼應\n
。答案應該是簡單的,但 - 沒有得到read
顯示提示:
echo "Please Enter a Message:" 1>&2
read message
但是,無論輸入是否來自終端,都會發生`echo'; 「read」消息不會顯示。 – 2010-11-28 09:20:22
公平點,如果腳本將被非交互式使用。 – Alnitak 2010-11-28 09:22:02
另外,我將不得不將回聲重定向到錯誤流。 – Strawberry 2010-11-28 09:32:13
$ read -p "Please Enter a Message:
> " message
Please Enter a Message:
鍵入之間的「換行」「:」和「「」直接
整潔的解決方案,但可能會讓稍後讀取代碼的人感到困惑。 – Alnitak 2010-11-28 09:19:59
read -p "Please Enter a Message:
返回" message
只是爲了提高Huang F. Lei和T.J. Crowder,我喜歡(並添加+1)的答案.. 您可以使用以下語法之一太多,基本上是相同的,這取決於你的口味(我喜歡第一個):
read -p "$(echo -e 'Please Enter a Message: \n\b')" message
read -p "`echo -e 'Please Enter a Message: \n\b'`" message
其中兩個將產生以下輸出:
Please Enter a Message:
_
其中_是光標。
如果你需要的字符串,但最終的任何部分換行,你可以使用\n
,例如
read -p "`echo -e '\nPlease Enter\na Message: '`" message
會產生
.
Please Enter
a Message: _
哪裏。是空白的第一個新行,_是光標。
只有添加你必須使用\n\b
作爲我的第一個例子
只是爲了尋找同樣的事情最後結尾的新行。您可以使用:
# -r and -e options are unrelated to the answer.
read -rep $'Please Enter a Message:\n' message
它將工作完全是問:
Please enter a Message:
_
這裏是bash的手冊頁解釋它的提取物:形式$的
詞'串'被特別對待。字擴展爲 字符串,反斜槓轉義字符被替換爲 ANSI C標準中指定的字符。反斜槓轉義序列,如果存在的話,被解碼 如下:
- (...)
- \ n個新線
- (...)
膨脹的結果是單引用,好像美元符號不存在 一直存在。
花了我一會兒才知道。
注意單引號和雙引號不同的表現在這方面:
一個美元符號($)開頭的雙引用字符串將導致 字符串根據當前區域進行翻譯。如果cur- 租用區域設置爲C或POSIX,則忽略美元符號。如果翻譯並替換字符串 ,則替換爲雙引號。
這裏有公認的答案的改善,不需要產卵子shell:
read -p "Please Enter a Message:"$'\n' message
形式
$'string'
的詞會被特殊對待。字擴展爲字符串,反斜槓轉義字符被替換爲ANSI C標準指定的字符。
- 1. 如何在PowerShell中添加換行符到命令輸出中?
- 2. 如何爲命令行添加清單Saxon XSLT轉換
- 3. 使用optparse-appative從命令行參數中讀取換行符
- 4. 如何讀取Linux命令行
- 5. 如何在命令行中讀取* C
- 6. Bash - 如何使用命令替換在循環中添加換行符?
- 7. 如何讀取telnetlib命令
- 8. 在Windows上從命令行添加換行符到git commit -m
- 9. 如何從命令行添加gdi32.lib
- 10. 如何從C中的命令行參數讀取「字符串」?
- 11. 如何在命令行中讀取用戶的字符
- 12. 從命令行讀取並使用sscanf轉換爲整數
- 13. 如何將命令提示符命令轉換爲.bat文件
- 14. 從命令行中讀取字符串util可以將「讀取」爲浮點數
- 15. 剪切命令換行符
- 16. 如何讀取命令行參數作爲整數而不是字符串?
- 17. 如何總是爲某些命令添加&符號? (MacOS/bash)
- 18. 如何將命令行字符串轉換爲C++中的hwnd?
- 19. 如何將命令行字符串轉換爲數組?
- 20. 如何添加文件名作爲AWK命令的第一行
- 21. 如何通過命令行爲ghostscript添加水印?
- 22. 逐行讀取並執行if命令
- 23. 命令行 - 將任何字符串轉換爲標識符?
- 24. 如何從使用命令轉換腳本,讀取命令,剪切?
- 25. 逐行讀取命令行的輸出轉換成字符串的在C++中
- 26. 添加換行符
- 27. 在CoreOS雲配置中執行命令(例如添加交換)
- 28. 如何從ftplibs讀取響應命令?
- 29. 如何從yii命令讀取stdin
- 30. 如何向TextView添加換行符?
你可能會考慮更新接受的答案爲[這一個](http://stackoverflow.com/a/15696250/1048539),因爲它遠遠小於哈克(少混亂對我們未來的參觀者......)。 – enderland 2016-02-12 16:21:03