2017-07-14 34 views
0

我已经打开了一个快速bash脚本,用于将rsync备份从一台服务器复制到另一台服务器,并将它们置于目标服务器上正确的文件夹结构中。暂停用户输入,但在X秒后继续

#!/usr/bin/env bash 
fullnaspaths=$(ls -d /poolz1/server.example.com/accounts/*/jbm.*/*/) 
total_paths=$(wc -l <<< "$fullnaspaths") 
for path in $fullnaspaths 
do 
    let COUNTER=COUNTER+1 
    user=$(basename $path) 
    echo [$COUNTER of $total_paths] $user 
    rsync -ia $path [email protected]:/backup/2017-07-11/accounts/$user/ 
done 

但我想要做的就是在rsync命令之前立即添加一个断点,提示用户退出脚本或继续。我正在努力的一点是,我可能会添加一个超时,以便它继续,而不管任何按键输入如何,脚本在60秒后继续循环。

有谁知道是否以及如何实现?

非常感谢。

+0

你尝试'sleep'?或'读-t' – 123

回答

1

我的建议是像gentoo portage那样做。它从5到1计数,并说你应该按Ctrl + C取消。就像这样:

#!/bin/bash 

echo "Press Ctrl+C to cancel" 
for i in {5..1}; do 
    echo -n "$i " 
    sleep 1 
done 
echo 
echo "Continuing..." 
+0

我已经走了这个。我喜欢倒计时;)谢谢! – willdashwood

1

你可以使用阅读-t

read -t5 -n1 -p"press any key in 5 seconds to cancel" && exit 

printf "\n%s\n" "continuing" 
相关问题