[英]Bash. infinite loop showing a counter and more info
我有一個腳本生成dinamically另一個bash腳本。 在這個heredoc腳本中有一個無限循環顯示一個計數器(這有效!):
date1=`date +%s`
while true; do
echo -ne "$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r";
done
如果只放這個,這個循環工作正常。 問題是我不僅需要顯示計數器。 需要更多信息(一些靜態數據)。 我會把我的NOT工作代碼:
#!/bin/bash
dir="/tmp/"
my_file="generatedscript.sh"
rm -rf "$dir$my_file" > /dev/null 2>&1
exec 3>"$dir$my_file"
cat >&3 <<-'EOF'
#!/bin/bash
date1=`date +%s`
while true; do
echo -ne "Info\n" # this is the damned line, if you remove it the counter works fine
echo -ne "Time counter: $(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r";
done
EOF
exec 3>&-
xterm -hold -geometry 78x25+0+0 -T "Testing" -e "bash \"$dir$my_file\"" > /dev/null 2>&1 &
這顯示了具有大量行的xterm窗口,並且Info行與其他行的“Time”字重疊。 我想在時間計數器行和計數器運行中分別顯示信息行......只有一次!
如果刪除行echo -ne“Info \\ n”計數器顯示正常,正在運行並且只運行一次...如何在此之上放置另一條不同的行(回顯信息)並作為固定行而不重復? 有可能嗎? 任何想法如何達到這個? 謝謝。
只需將INFO線移出循環即可。 我通常喜歡把回車放在線的起點。 -n
或-e
都不是便攜式的,所以除了最簡單的echo
,我通常更喜歡printf
。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.