我正在写一段有几个输出的代码。我输出东西的部分有两个函数,第一个输出一些缩进的消息。我想第二个函数打印从前一个输出的缩进级别开始的东西。所以第二个函数应该知道第一个函数的缩进级别。我如何实现这一目标?
outputfunction1
outputfunction2
而不是
outputfunction1
outputfunction2
谢谢大家
答案 0 :(得分:0)
这是一个有趣(但可怕)的想法。
#!/bin/sh
function1() { printf '\t\toutputfunction1\n'; }
function2() { echo bar; }
indent (){
indent=$(printf '%s' "$(for ((i=$1; $i>0; i--)); do printf '\t'; done)")
shift
$@ | sed "s/^/$indent/"
}
get_indent() {
# Call a function and return the indentation of the last line.
$@ | awk '1; END{ exit( match($0, "[^\t]") -1 )}'
}
get_indent function1
indent $? function2
请注意,这取决于"缩进"被定义为硬标签的数量。我会把它作为练习让读者为任意空白做这件事。