我正在尝试使用sed,但我希望在Linux和Mac下都能正常运行。目前,我有这样的事情:
if test -f ${GENESISFILE};
then
echo "Replacing ..."
sed -i '' "s/ADDRESS/${ADDRESS}/g" ${GENESISFILE}
else
echo "No such file"
fi现在,重点是使用-i ''部件,它在Mac下正常运行,但在Linux下不运行,如果我删除它,那么它在Mac下就不能工作。怎样才能使其跨平台兼容呢?
发布于 2020-12-20 20:56:51
而不是sed一线:
sed -i '' "s/ADDRESS/${ADDRESS}/g" ${GENESISFILE}使用这个跨平台Perl一行程序,它可以在Linux和macOS上运行:
perl -i.bak -pe 's/ADDRESS/$ENV{ADDRESS}/g' ${GENESISFILE}Perl一行程序使用以下命令行标志:
-e:告诉Perl在行中查找代码,而不是在文件中。
-p:每次循环输入一行,默认情况下将其分配给$_。在每个循环迭代之后添加print $_。
-i.bak:就地编辑输入文件(覆盖输入文件).在重写之前,将扩展名.bak附加到原始文件的备份副本中。单独使用-i,而不使用.bak,可以跳过备份。
还请参见:
perldoc perlrun: how to execute the Perl interpreter: command line switches
https://stackoverflow.com/questions/65384534
复制相似问题