簡體   English   中英

為什么有人會使用echo為bash或ksh中的變量賦值?

[英]Why would someone use echo to assign values to variables in bash or ksh?

最近我遇到了一個不尋常的echo用來在客戶端的ksh腳本中分配變量。

例如,有許多實例,例如以下

a='something'
b='else'
c=`echo "${a} ${b}"`

我一直無法想出有人可能做到這一點的任何理由。

可能有一些遺留的原因嗎? (我已經做了30多年的殼,從來沒有見過這個)

還是只是無知?

無論是在當前的bash還是其POSIX sh或Bourne前輩中,都沒有令人信服的理由。

c="$a $b"

...是給出的代碼的完全替代,並且運行得更快(嘗試將其置於循環中;命令替換,由反引號創建,將新shell作為子進程分離並讀取其stdout - 高開銷操作)。

你看到的是一個錯誤使用echo的例子,因為c可以聲明為:

c="$a $b"

例如,當您需要命令來過濾輸出時,回聲的常見用途是

$ line="100090 $100,00 Mary"
$ name=`echo "$line" | grep -Eo "[a-zA-Z]+$"`
echo $name
Mary

但是如果你根本不使用echo會更有效率。 上面的相同內容可以通過“read”完成,而無需創建新進程:

$ line="100090 $100,00 Paul"
$ read -r _ _ name _ <<<"$line"
echo $name
Paul

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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