我在 bash 上调用 curl 以从已安装的 SD 卡中复制文件,如果设备被卸载,则可以选择稍后恢复复制。当我通过卸载卷中断复制并且文件被实际复制时,我收到相同的状态退出代码 0。任何建议如何捕捉文件未被复制的情况?
我一次只复制一个文件。
这是命令:
curl -C - -O file:///mnt/sdcard/DCIM/100/0044.MP4
我找到了一个不像我想要的那样清晰但仍然有效的解决方案。我一个接一个地执行命令 2 次,所以当第一个命令在卸载时返回 0 时,第二个命令现在尝试复制文件并返回错误代码 37,因为源无法访问。如果第二个命令返回 0 我认为文件已复制。
按照你的概念,你可以有一个这样的脚本:
#!/bin/bash
# Copies files persistently.
#
# Usage: pc <filepath> [<filepath2>] ...
#
function pc {
local FILE
for FILE; do
echo "Copying $FILE."
until curl -C - -O "file://${FILE}" && curl -C - -O "file://${FILE}"; do
if [[ -e $FILE ]]; then
echo "File $FILE can't be copied."
break
else
echo "Waiting for $FILE."
until
sleep 5
[[ -e $FILE ]]
do
continue
done
fi
done
done
}
pc "$@"
如果您愿意,也可以将该函数嵌入到 bash 启动脚本中。