【发布时间】:2020-01-02 05:52:22
【问题描述】:
我想编写一个脚本来查找变量并检查它是否包含确切的字符串,如果存在则对其进行注释。
我尝试过使用 sed 和 grep,但它还没有为我工作。
我的删除脚本:
JAVA_LOC=`which java`
JV_PAT=`echo $JAVA_LOC |rev| cut -d'/' -f3- | rev`
del=`sed -i '/JAVA_HOME=${JV_PAT}/d' /home/admin/Vishal/test_bash.sh`
if [ $? = 0 ]
then
echo "Deleted"
else
echo "Nope"
fi
JV_PAT包含安装java的路径,不包括/bin
JAVA_LOC = /data/jdk1.8.0_111/bin/java
JV_PAT = /data/jdk1.8.0_111
我的输出:
已删除
脚本成功执行,但不会从文件 test_bash 中删除特定行。
test_bash.sh 文件
JAVA_HOME=/data/jdk1.8.0_111
PATH=.:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/admin/local/jdk1.8.0_111/bin:/data/hadoop28/bin:/data/hive232/bin:/data/derby1014/bin:/home/admin/local/jdk1.8.0_111/bin:/data/hadoop28/bin:/data/hive232/bin:/data/derby1014/bin:/home/admin/local/jdk1.8.0_111/bin:/data/hadoop28/bin:/data/hive232/bin:/data/derby1014/bin:/home/admin/bin:/u01/app/oracle/product/11.2.0/xe/bin:/home/admin/local/jdk1.8.0_111/bin
我想检查 JAVA_HOME 是否包含与 JV_PAT 完全相同的字符串,以及是否有注释。
注意:如果您能帮助我编写用于评论和删除的脚本,那就太好了。
【问题讨论】:
-
使用单引号时变量不会被替换。试试 del=
sed -i "/JAVA_HOME=${JV_PAT}/d" /home/admin/Vishal/test_bash.sh