Linux
Linux Bash:變數到另一個變數
我有這個:
echo $MSG | sed -e $'s/;/\\\n/g'
我想將該 sed 的結果放入一個名為 $MSG2 的新變數中
就像是:
$MSG2=echo $MSG|sed -e $'s/;/\\\n/g'
我該怎麼做?
謝謝!
對於您的任務,您不需要管道或 sed。
bash
使用這樣的內置命令可以更有效地完成這一切:NewMsg=${MSG//;/$'\n'}
${MSG//;/$'\n'}
是模式替換的一個例子。;
它用換行符替換每次出現的。結果保存在 shell 變數NewMsg
中。舉個例子:
$ Msg='1;2;3' $ NewMsg=${Msg//;/$'\n'} $ echo "$NewMsg" 1 2 3
筆記:
- 最佳實踐是使用小寫或混合大小寫的 shell 變數。系統對其變數使用所有大寫字母,您不想意外覆蓋其中一個。
- 除非您明確想要分詞和路徑名擴展,否則請始終將您的 shell 變數放在雙引號中。因此,當臨時使用 時
echo $MSG
,請改用echo "$MSG"
。- 此外,除非您知道要回顯的字元串中將包含哪些字元,否則會
echo
出現問題並且使用起來更安全、更便攜printf '%s\n' "$MSG"
。有關更多詳細資訊,請參閱 Stéphane Chazelas關於echo
vsprintf
的內容豐富的討論。- 請注意,如果您確實使用命令替換,
$(...)
shell 將刪除所有尾隨換行符。雖然這通常很有幫助,但有時更改是不需要的。