击。无限循环显示计数器和更多信息

时间:2016-07-28 11:59:16

标签: bash loops eof infinite

我有一个脚本生成另一个bash脚本。在这个heredoc脚本中有一个无限循环显示一个计数器(这有效!):

newOrder <- c(2,1,3,4)
exchangeNestedDF <- function(ListOfListsOfDF, newOrder){
  NewList <- lapply(ListOfListsOfDF, function(x) x[newOrder])
  names(NewList) <- names(ListOfListsOfDF)
  return(NewList)
}
list2_NeW <- exchangeNestedDF(list2, newOrder)

如果只放这个,这个循环工作正常。问题是我不仅需要显示计数器。需要更多信息(一些静态数据)。我将把我的NOT工作代码:

NewOrders <- list(c(2,1,3,4),  c(2,3,1,4),  c(2,3,4,1))
LIST <- lapply(1:3, function(i) exchangeNestedDF(get(paste0("list", i)), NewOrders[[i]]))

这表示xterm窗口有很多行,Info行与其他行的“Time”字重叠。我想在时间计数器行和计数器运行中分别显示信息行......只有一次!

如果删除行echo -ne“Info \ n”计数器显示正常,只运行一次...如何在此上方放置另一条不同的行(带有信息的回显)并作为固定行而不重复?有可能吗?任何想法如何达到这个?谢谢。

1 个答案:

答案 0 :(得分:0)

只需将INFO线移出循环即可。我通常喜欢把回车放在线的起点。 -n-e都不是可移植的,因此除printf的最简单用法外,我通常更喜欢echo

dir="/tmp/"
my_file="generatedscript.sh"

script="$tmp/$my_file"
cat > "$script" <<'EOF'
echo INFO
date1=$(date +%s)
while true; do
  now=$(date +%s)
  delta=$((now - date1))
  printf '\rTime counter: %s' "$(date -u --date "$delta" +%H:%M:%S)"
done
EOF
chmod +x 500 "$tmp/$my_file"
xterm -hold -geometry 78x25+0+0 -T "Testing" -e "$script" > /dev/null