我试图在Linux容器上运行以下命令,但我得到了以下错误:
root@instance-0024c639:/etc/java-8-openjdk# sed -i s/^assistive_technologies=/#&/ accessibility.properties
[1] 1095
sed: -e expression #1, char 28: unterminated `s' command
bash: /: Is a directory
[1]+ Exit 1 sed -i s/^assistive_technologies=/#我运行它的文件内容是:
root@instance-0024c639:/etc/java-8-openjdk# cat accessibility.properties
#
# The following line specifies the assistive technology classes
# that should be loaded into the Java VM when the AWT is initailized.
# Specify multiple classes by separating them with commas.
# Note: the line below cannot end the file (there must be at
# a minimum a blank line following it).
#
assistive_technologies=org.GNOME.Accessibility.AtkWrapper有人能帮我吗?
发布于 2017-11-09 10:59:13
只需引用命令,&就不会对Bash有特殊的意义了!
sed -i 's/^assistive_technologies=/#&/' accessibility.properties
# ^ ^这里到底发生了什么?
在man bash中读取
如果一个命令被控制操作符终止&,shell将在子shell的后台执行该命令。
因此,当你说:
sed -i s/^assistive_technologies=/#&/ accessibility.propertiesBash实际上看到了两个命令:
sed -i s/^assistive_technologies=/#
/ accessibility.properties第一个是由&发送到后台的,因此您可以得到以下消息:
一千零九五年
然后计算它并确定它是不完整的,因此它触发了错误:
sed:-e表达式#1,char 28:未终止的命令
最后,它展示了后台作业是如何完成的:
1+出口1 sed -i s/^assistive_-i=/#
同时,它尝试执行以下命令:
/ accessibility.properties但是不幸地失败了,因此它返回了错误:
bash: /:是一个目录
发布于 2017-11-09 10:32:56
你必须使用引号:
sed -i 's/^assistive_technologies=/#&/' accessibility.propertieshttps://stackoverflow.com/questions/47199479
复制相似问题