首页 / JAVA / 用sed更新或附加JAVA_HOME
用sed更新或附加JAVA_HOME
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用sed更新或附加JAVA_HOME,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1067字,纯文字阅读大概需要2分钟。
内容图文
![用sed更新或附加JAVA_HOME](/upload/InfoBanner/zyjiaocheng/738/7660f6052d9f4df6ab51db5681a9c0be.jpg)
我正在编写新的VM堆栈脚本,我正在尝试在?/ .bashrc文件中更新或附加JAVA_HOME
我已经设法通过从命令行运行以下sed命令来做到这一点.
sed '/export[ ]JAVA_HOME=/{h;s/=.*/='"updatedJava"'/};${x;/^$/{s//export JAVA_HOME='"newJava"'/;H};x}' -i ~/.bashrc
但是,当我尝试使用变量从脚本运行它时,我收到以下错误:
sed: -e expression #1, char 34: unknown option to `s’
我发现它是由于我的路径包含/与sed分隔符混淆的事实引起的,因此我将其更改为:
sed '/export[ ]JAVA_HOME=/{h;s#=.*#='$java'#};${x;/^$/{s##export JAVA_HOME='$java'#;H};x}' -i ~/.bashrc
其中$java包含java的路径,但是现在它不起作用,它也不会抛出任何异常.我在哪里弄错了?
解决方法:
保持你的逻辑,我以一种稍微紧凑的形式重新制作了sed,其中,在sed开始时对JAVA_HOME进行了一次更改.
另外,还有一些关于转义java变量的内容,以便它适合包含在s /// sed命令的rhs中.
另外,sed是POSIX-ly.
java_esc=$(printf '%s\n' "$java" | sed -e 's|[\&/]|\\&|g;$!s/$/\\/')
sed -i.BAK -e '
1{
x
s/.*/export JAVA_HOME='"$java_esc"'/
x
}
# assuming the JAVA_HOME declaration does not span line boundaries
/^[[:blank:]]*export[[:blank:]]\{1,\}JAVA_HOME=/{
g
x
s/^//
x
}
${
x
/^\n/!H
x
}
' ~/.bashrc
内容总结
以上是互联网集市为您收集整理的用sed更新或附加JAVA_HOME全部内容,希望文章能够帮你解决用sed更新或附加JAVA_HOME所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。