此 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 脚本会因空格或其他特殊字符而窒息?.使用引号可以防止:
请注意,您实际上并不需要
sed
如此简单的替换 - 您可以使用 shell 替换