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