[英]Why is echo producing a newline?
之間有什么區別
echo -n "
> "
和
echo -n ""
第一個產生換行符,而第二個則不。
我正在運行GNU bash,版本4.2.45(1)-發行版(x86_64-pc-linux-gnu)
編輯:我得到輸入在這里換行。 我應該對這個問題更清楚。 考慮以下腳本input.sh
#!/bin/bash
echo -n $1
以下不會產生換行符。
./input.sh "
> "
字符串
"
> "
就bash而言,其中包含換行符。 -n
標志僅表示echo不會在輸出末尾打印額外的換行符。 它仍然會重現您的輸入,包括換行符。
擴展@chepner的評論。 考慮一下:
$ set -- "
"
$ echo -n "$1" | od -c
0000000 \n
0000001
$ echo -n $1 | od -c
0000000
如果不加引號,shell將刪除所有開頭或結尾的空格序列。 因此,當您不報價$ 1時,bash會丟棄換行符。 這是在調用“ echo” 之前發生的,因此“ echo -n” 沒有給出參數 。
在手冊的“分詞”部分中:
如果未設置
IFS
,或者其值恰好是默認值<space><tab><newline>
,則在先前擴展結果的開頭和結尾處分別是<space>
,<tab>
和<newline>
序列會被忽略,並且任何不在開頭或結尾的IFS
字符序列都用於分隔單詞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.