簡體   English   中英

將具有命令替換功能的sed輸出存儲到變量中

[英]Store output of sed with command substitution in it into a variable

考慮一個字符串

Message="Hello WoRld"

我想用小寫r代替大寫R

echo "$Message" > file.txt
NewMessage=$(sed 's/R/r/' file.txt)

工作正常! 以下也可以

NewMessage=$(echo ${Message} | sed 's/R/r/')

但是我的第一反應是使用命令替換

NewMessage=$(sed 's/R/r/' <("$Message"))

但它不起作用。 為什么不起作用?

您的CMD-SUB 版本缺少龍頭M

但是你想要

NewMessage=$(sed 's/R/r/' <(echo "$Message"))

否則您的外殼可能會支持

NewMessage=$(sed 's/R/r/' <<< "$Message")

編輯

最簡單,得到最廣泛支持的解決方案將更加簡單

NewMessage=$(echo "$Message" | sed 's/R/r/') 

如果您需要與Bourne Shell的絕對石器時代兼容性(true /bin/sh ),則必須放棄漂亮的$(..cmdSub)語法,並使用反引號代替命令:

NewMessage=`echo "$Message" | sed 's/R/r/'` 

高溫超導

如果您使用的是bash 4,則不需要sed

NewMessage=${Message,,R}

暫無
暫無

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

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