如何使用 Bash 或 Python 中的循环实现此代码



下面的代码基本上打印一个点".",其中我试图模仿shellscript中的进度条

#!/bin/bash
printf "Copying files .."
sleep 1
printf "."
sleep 1
printf "."
sleep 1
printf ".."
clear
sleep 1
echo ""
echo "File copy complete"

在 Python 中,你可以做这样的事情:

from time import sleep
from sys import stdout 
Print = stdout.write
Print("Copying files..")
for x in xrange(4):
    Print(".") 
    sleep(1)
print "nFile copy complete."

在每次迭代中,它都会打印一个新的.

快速搜索后,我找到了这篇文章,它很好地解释了如何在更新进度条的同时复制文件/目录。

有很多方法可以编写循环。 我有点喜欢:

yes | sed 5q | while read r; do sleep 1; printf .; done; echo

但是你真的不想要循环;你想继续打印进度条,直到副本完成,所以你想要这样的东西:

progress() { while :; do sleep 1; printf .; done; }
copy_the_files & # start the copy
copy_pid=$!      # record the pid
progress &       # start up a process to draw the progress bar
progress_pid=$!  # record the pid
wait $copy_pid   # wait for the copy to finish
kill $progress_pid  # terminate the progress bar
echo

或者也许(您应该将"睡眠 5"替换为复制文件的命令)

#!/bin/bash
copy_the_files() { sleep 5; kill -s USR1 $$; }
progress() { while :; do sleep 1; printf .; done; }
copy_the_files &
progress &
trap 'kill $!; echo' USR1
wait

它可能会帮助你!

import time
print "Copying files .."
time.sleep(1)
print "."
time.sleep(1)
print "."
time.sleep(1)
print ".."
time.sleep(1)
print ""
print "File copy complete"

相关内容

  • 没有找到相关文章

最新更新