Sed给出"sed:1:"tsunit.js":undefined label'sunit.js'"

Som*_*Guy 4 bash makefile sed

短暂的任务,为什么这一行

sed -i '1s/^/#!\/usr\/bin\/env node\n/' tsunit.js;\
Run Code Online (Sandbox Code Playgroud)

给我这个错误

sed: 1: "tsunit.js": undefined label 'sunit.js'
Run Code Online (Sandbox Code Playgroud)

在Makefile中,如果相关的话.

我在Mac上.

Joh*_*024 7

根据Apple手册页sed,该-i选项采用必需参数指定备份文件的文件扩展名.因此,假设您使用的是Mac或类似设备,请sed相信您打算'1s/^/#!\/usr\/bin\/env node\n/'成为备份的文件扩展名.然后它将其解释tsunit.jssed命令.领导者t告诉sed分支到标签sunit.js,当然,标签不存在.因此错误消息.

解决方案是:

sed -i '.bak' '1s/^/#!\/usr\/bin\/env node\n/' tsunit.js
Run Code Online (Sandbox Code Playgroud)

或者,如果你真的不想要备份:

sed -i '' '1s/^/#!\/usr\/bin\/env node\n/' tsunit.js
Run Code Online (Sandbox Code Playgroud)