接上一回,在我写tarball的时候,因为没有考虑到GUI,所以在选择DB的时候,随便写了个select,现在考虑到GUI的静默安装,采用readUserinput函数。
花了一天的时候搞定sed的使用,在我使用sed替换配置PATH的时候,遇到一个问题,我无法传参,而且关键问题是参数是含有“/"的,参考网上的资料,使用双引号是必须的,但是还是不能传参,即使使用"\"来标意特殊字符,还是不行,然后发现传参里面还有一个参数是含有"/"的,所以一直不成功。
经过steven的帮忙,使用新的方法,即使用别的特殊符号,避开"/",那就是使用”%“符号,
原来是
D2B=$HOME/bj/enterprise/odbc.ini
sed -i s/"ODBCINI=.*"/"ODBCINI=$D2B"/ denv.sh
改成%之后成为
D2B=$HOME/bj/enterprise/odbc.ini
sed -i s%"ODBCINI=.*"%"ODBCINI=$D2B"% denv.sh
这样就避免了路径的改变问题。
下面我再给出一个函数,可以通过函数改变这个问题。
replaceProperty()
{
local var=$1
local val=$2
local file=$3
local secret=${4:-0}
local val1=$val
if [ $secret -ne 0 ]
then
val1=`echo $val1 | sed -r s/"."/"*"/g`
fi
echo "Replacing value of $var to $val1 in file $file ..."
sed -i "s|^$var=.*$|$var=\"$val\"|" $file
}
$1是参数的名称即路径的名称或者指定文件的名称
$2是要修改之后的路径或修改之后的路径的文件
$3是文件的名称。
通过调用上面的函数,可以批量的修改路径问题。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27633196/viewspace-765428/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27633196/viewspace-765428/