我想创建一个循环,如果它返回错误,则重复 ncftp 传输。
我有点不确定如何在循环中使用退出代码变量。这样的东西会起作用吗?
until [$? == 0]; do
ncftpput -DD -z -u user -p password remoteserver /remote/dir /local/file
done
Run Code Online (Sandbox Code Playgroud)
Roy*_*Roy 55
我在 serverfault 的其他地方找到了这个优雅循环的基础。结果证明不需要保存退出代码,因为您可以直接在命令本身上进行测试;
until ncftpput -DD -z -u user -p password remoteserver /remote/dir /local/file; do
echo Tansfer disrupted, retrying in 10 seconds...
sleep 10
done
Run Code Online (Sandbox Code Playgroud)
Dan*_*ley 11
几乎。您可能最好将返回值保存为变量,以便您可以在循环之前预先设置它。否则它将受到上次运行命令的影响。
您可能还想sleep
在那里吊索一个以阻止它过快地重生。
RET=1
until [ ${RET} -eq 0 ]; do
ncftpput -DD -z -u user -p password remoteserver /remote/dir /local/file
RET=$?
sleep 10
done
Run Code Online (Sandbox Code Playgroud)
有点 hacky,但我的解决方案是创建一个 bash 函数,如果它因失败退出,它会自行运行
function retry { the_command_you_want && echo "success" || (echo "fail" && retry) }; retry
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
48600 次 |
最近记录: |