mle*_*les 1 macos bash shell sed
我正在将代理变量注入到Shell脚本中。我必须对字符串进行转义,因为它们之间有空格。
sed -i -e 's#UseConcMarkSweepGC#UseConcMarkSweepGC $PROXY_ARGS#g' ${TEST_HOME}/bin/test.sh
Run Code Online (Sandbox Code Playgroud)
现在,这总是-e在末尾生成另一个文件ith ,因此我以test.shand 结尾test.sh-e。两者是相同的。目前我在做
rm test.sh-e
Run Code Online (Sandbox Code Playgroud)
之后 sed这工作正常。我想知道是否有一种方法根本不生成临时文件?我-e收到错误时无法删除sed: -i may not be used with stdin。
这是因为,如果您处于需要-i参数的非GNU sed下,则将按照放置标志的顺序进行操作:
sed -i -e '...'
# ^^ ^^
# | |
# flag|
# |
# value for it
Run Code Online (Sandbox Code Playgroud)
这样,可以sed理解-e为要创建的备份文件的扩展名。
相反,说:
sed -e -i '...'
Run Code Online (Sandbox Code Playgroud)
或者只是明确说明该扩展名并将其设置为null,这样就不会创建备份文件:
sed -i '' -e '...'
Run Code Online (Sandbox Code Playgroud)
在sed中查看更多信息:-i不能与Mac OS X上的stdin一起使用。
| 归档时间: |
|
| 查看次数: |
1142 次 |
| 最近记录: |