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