Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 猛击。无限循环显示计数器和更多信息_Bash_Loops_Eof_Infinite - Fatal编程技术网

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

Bash 猛击。无限循环显示计数器和更多信息,bash,loops,eof,infinite,Bash,Loops,Eof,Infinite,我有一个脚本可以生成另一个bash脚本。在这个herdoc脚本中,有一个无限循环显示一个计数器(这很有效!): 如果只放这个,这个循环可以正常工作。问题是我需要的不仅仅是柜台。需要更多信息(一些静态数据)。我将把我的非工作代码: #!/bin/bash dir="/tmp/" my_file="generatedscript.sh" rm -rf "$dir$my_file" > /dev/null 2>&1 exec 3>"$dir$my_file" cat &

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

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

#!/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 &
#/bin/bash
dir=“/tmp/”
my_file=“generatedscript.sh”
rm-rf“$dir$my_file”>/dev/null 2>&1
exec 3>“$dir$my_文件”
cat>&3/dev/null 2>&1&
这显示了xterm窗口有很多行,信息行与另一行的“时间”字重叠。我想显示信息行分别从时间计数器行和计数器运行。。。而且只有一次


如果删除echo-ne“Info\n”行,计数器将显示ok(正常)、正在运行且仅显示一次。。。如何将另一条不同的线(带有信息的回音)放在这条线之上,并作为一条固定线而不重复?有可能吗?你知道如何达到这个目的吗?谢谢。

只需将信息行移出循环即可。我通常喜欢把回车放在队伍的开头。
-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
dir=“/tmp/”
my_file=“generatedscript.sh”
script=“$tmp/$my_文件”

cat>“$script”不确定为什么在这里乱搞文件描述符3
cat>“$dir/$my_file”
echo-ne“INFO\n”
echo INFO
没有区别。是的,是相同的。。。那是因为我在尝试不同的事情。。。没有成功。而cat>“$dir/$my_file”在
cat
上的重定向不会影响脚本的其余部分;使用FD3只是一个不必要的麻烦。谢谢。。与信息线的循环工程!。。。但我想你的柜台还有几秒钟,我想我会用我的柜台。无论如何,谢谢你的想法!当秒数超过24秒时就会崩溃。。。除息的
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