这个sed很有用,可以在shell脚本中替换Java home的值:
sed -i 's#^JAVA_HOME=.*$#JAVA_HOME="/usr/lib/jvm/java-1.7.0-oracle.x86_64"#' /apps/tempbsu.sh
但现在我尝试使用sed
在Perl应用中使用/调用qx()
:
qx(sed -i 's#^JAVA_HOME=.*$#JAVA_HOME="/usr/lib/jvm/java-1.7.0-oracle.x86_64"#' /apps/tempbsu.sh);
当我这样做时,我收到一个错误:
sed:-e表达式#1,字符58:未终止的's'命令
从检查中,我发现错误正在发生,因为sed缺少最后一个分隔符,但它似乎是正确的,即:
sed -i 's#.....#.......#' /apps/tempbssu.sh
有人可以告诉我为什么sed
因为我在Perl的qx()
中使用而失败了吗?
答案 0 :(得分:4)
$#JAVA_HOME
被视为Perl变量(数组变量的最后一个元素的编号)。逃脱它:\$#JAVA_HOME