簡體   English   中英

為什么回聲會產生換行符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM