FreeBSD sed 错误编辑文件到位

FreeBSD sed error editing files in place

出现错误,尝试使用 sed 使用 FreeBSD

就地编辑文件

sed: -I or -i may not be used with stdin

# Hello World Program in Bash Shell
# This is a Linux Machine
#cat /proc/version
#Linux version 3.10.0-229.7.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Tue Jun 23 22:06:11 UTC 2015
echo "Hello World!" 
FILE=new.txt
FOO=/var/foo
VAR=/var

sed -i.tmp '/LD_LIBRARY_PATH={$stdlib}/a\'$'\n''LD_32_LIB_PATH='"$FOO"'\nldd '"$VAR"'' $FILE

我正在尝试 运行 sed 在 RedHat Linux 机器上运行良好的搜索模式后就地追加。

我正在尝试 运行 在 FreeBSD 机器中执行相同的命令(详细信息 FreeBSD 8.1-RELEASE-p2 FreeBSD 8.1-RELEASE-p2 #0: Fri Jan 14 11:35:15 EST 2011 ),但出现上述错误。

FreeBSD 不支持标准输入的就地替换吗?

在 FreeBSD 上 tcsh 是标准的 shell,而不是 bash

tcsh 中设置变量是用 set 完成的,而不是简单的 =。 因此,当您 运行 此脚本时, FILE 变量未设置,它会尝试编辑标准输入。

-i 标志创建就地编辑文件的备份。这在像 stdin 这样的流的上下文中没有意义。因此出现错误消息。