首先:在我的shell脚本中:
[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的函数体替换为calc.txt中的sub_func体;让它成为这个:
[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脚本实现它,我该如何解决?提示:源或出口无法使用。
答案 0 :(得分:1)
您可以使用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.sh
的内部区块的新calc.txt
位于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 $?