首先:在我的外壳脚本中:
[root@localhost ~]# cat calc.sh
#! /bin/sh
calc_func()
{
i=1;
j=2;
if [ $i -gt 0 ];then
return $(($i+$j));
fi
}
calc_func
echo $?
然后,在我的文字中:
[root@localhost ~]# cat calc.txt
sub_func()
{
i=100;
j=200;
if [ $i -gt 0 ];then
return $(($i-$j));
fi
}
现在,我想将 calc.sh 中名为 calc_func 的函数体替换为 sub_func 的 Calc.txt 主体;让它变成这样:
[root@localhost ~]# cat calc.sh
#! /bin/sh
calc_func()
{
i=100;
j=200;
if [ $i -gt 0 ];then
return $(($i-$j));
fi
}
calc_func
echo $?
我想用shell脚本实现它,我该如何解决它? 提示:源或导出无法使用。
你可以
相当容易地使用head
、tail
、sed
和mv
来完成。例如:
head -n 2 calc.sh >tmp.sh
sed -n '/{/,/}/p' calc.txt >> tmp.sh
tail -n2 calc.sh >> tmp.sh
mv calc.sh calc.sh.sav; mv tmp.sh calc.sh
您可以将其作为单行或简短脚本来执行此操作。
您的原始calc.sh
现在处于calc.sh.sav
状态,并且带有calc.txt
内块的新calc.sh
处于calc.sh
状态,例如
$ cat calc.sh
#! /bin/sh
calc_func()
{
i=100;
j=200;
if [ $i -gt 0 ];then
return $(($i-$j));
fi
}
calc_func
echo $?