Bash
替換變數中的值並在 BASH 中保留新行
此 BASH 腳本按預期工作。我有一個包含數據行的變數 ($foo),我告訴 bash 在新行處分隔,然後循環遍歷該變數。
#!/bin/bash foo=" Original Line1 Original Line2 Original Line3 " IFS=$'\n' for line in $foo do echo $line done
正如預期的那樣,數據在它自己的線上。
Original Line1 Original Line2 Original Line3
我將此行添加到腳本中,以將 $foo 變數中的文本“Line2”替換為“EXAMPLE”。
foo=$( echo $foo | sed "s|Line2|EXAMPLE|" )
當我執行腳本時,數據不再分開在它自己的行上,而是列印在一行上。我不確定如何替換變數中的值並保留新行。
Original Line1 Original EXAMPLE Original Line3
您的未引用變數
$foo
會受到 shell 的分詞,如為什麼我的 shell 腳本會因空格或其他特殊字元而窒息?.使用引號可以防止:
echo "$foo" | sed "s|Line2|EXAMPLE|"
請注意,您實際上並不需要
sed
如此簡單的替換 - 您可以使用 shell 替換foo="${foo/Line2/EXAMPLE}"