在Shell脚本文件中添加行

时间:2016-03-16 21:44:40

标签: bash shell

如何使用bash在函数的最末端向shell脚本添加一行?

说我要添加的行是:echo "Well Hello There";,我的功能是

function hello_there {
    echo "Hi";
    echo "Whats popping?";

}

唯一真正的常量将是方法hello_there的名称,以及开头和结尾括号......但是我需要将行放在末尾括号之外......我不知道有多少我需要能够做到这一点...

3 个答案:

答案 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"

在调用你的剧本之前。