我是shell脚本的新手但遇到这个错误并且无法弄清楚是什么.
sed: 1: "/Users/local/Do ...": extra characters at the end of d command
sed: 1: "/Users/local/Do ...": extra characters at the end of d command
sed: 1: "/Users/local/Do ...": extra characters at the end of d command
sed: 1: "/Users/local/Do ...": extra characters at the end of d command
Run Code Online (Sandbox Code Playgroud)
这是我正在运行的脚本
for fl in $(S_convertPath ${RESOURCE_DIR}/db)/db.changelog-*xml; do
sed -i "s/HOSTNAME/${IP_ADDRESS}/g" $fl
done
Run Code Online (Sandbox Code Playgroud)
谢谢
pax*_*blo 46
鉴于sed您似乎认为您正在运行delete line命令(d),您可能希望输出命令以查看您的环境变量中实际存在的内容:
for fl in $(S_convertPath ${RESOURCE_DIR}/db)/db.changelog-*xml; do
echo sed -i "s/HOSTNAME/${PSM_SERVER_ADDRESS}/g" $fl
done
Run Code Online (Sandbox Code Playgroud)
PSM_SERVER_ADDRESS腐败你的sed命令很有可能(并且可能需要进行处理以使其干净).一种方法(如果你有一个足够的sed),将使用未出现在环境变量中的分隔符,例如:
sed -i "s?HOSTNAME?${PSM_SERVER_ADDRESS}?g" $fl
Run Code Online (Sandbox Code Playgroud)
由于您已接受此答案,我不妨为您找到的其他问题添加解决方案.sed与Linux不同,BSD似乎要求您提供该-i选项的扩展.所以,虽然Linux允许:
sed -i "sed-command"
Run Code Online (Sandbox Code Playgroud)
要进行就地编辑,BSD变体需要具备:
sed -i "" "sed-command"
Run Code Online (Sandbox Code Playgroud)
带有空备份后缀.
如果没有它,sed可以使用您的命令作为扩展名,并使用您的第一个文件名作为命令.