如何使用bash在函数的最末端向shell脚本添加一行?
说我要添加的行是:echo "Well Hello There";
,我的功能是
function hello_there {
echo "Hi";
echo "Whats popping?";
}
唯一真正的常量将是方法hello_there
的名称,以及开头和结尾括号......但是我需要将行放在末尾括号之外......我不知道有多少我需要能够做到这一点...
答案 0 :(得分:0)
您可以查找结束“}”并将其替换为
printf '"Well Hello There"; \n}'
并在分号后插入换行符,也使用printf而不是echo
答案 1 :(得分:0)
您可以按如下方式重新生成功能代码:
function hello_there {
echo "Hi";
echo "Whats popping?";
}
cmd='echo \"Well\ Hello\ There \"'
type hello_there | tr '\n' ' ' | sed -e "s/.*nction/function/g" | sed -e "s/[(|)]//g" | sed -e "s/\}/\; $cmd\;\}/g"
答案 2 :(得分:0)
我不会尝试动态更改脚本的来源。这太危险了。有几种选择。最接近你的问题规范的那个可能是写这样的函数:
function hello_there {
echo "Hi";
echo "Whats popping?";
${HELLO_THERE_POSTCMD:-true}
}
如果要更改此函数的行为,例如让它以递归方式擦除主目录,可以设置环境变量
export HELLO_THERE_POSTCOMD="rm -rf $HOME"
在调用你的剧本之前。