Linux

Linux Bash:變數到另一個變數

  • June 14, 2019

我有這個:

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

筆記:

  1. 最佳實踐是使用小寫或混合大小寫的 shell 變數。系統對其變數使用所有大寫字母,您不想意外覆蓋其中一個。
  2. 除非您明確想要分詞路徑名擴展,否則請始終將您的 shell 變數放在雙引號中。因此,當臨時使用 時echo $MSG,請改用echo "$MSG"
  3. 此外,除非您知道要回顯的字元串中將包含哪些字元,否則會echo出現問題並且使用起來更安全、更便攜printf '%s\n' "$MSG"。有關更多詳細資訊,請參閱 Stéphane Chazelas關於echovsprintf的內容豐富的討論。
  4. 請注意,如果您確實使用命令替換,$(...)shell 將刪除所有尾隨換行符。雖然這通常很有幫助,但有時更改是不需要的。

引用自:https://unix.stackexchange.com/questions/524836