Bash
在 bash 中檢查命令是否成功
我目前正在編寫一個小腳本來備份大量磁片,然後將它們格式化以備後用。
我
dd
用來複製磁碟的映像並cp
複制磁碟上的所有文件。以下是我用來執行此操作的命令:
# Copying disk image dd if="/dev/fd0" of="/path/to/backup/folder" &>/dev/null && sync # Copying disk files cp -R "/mnt/floppy/." "/path/to/backup/folder/" &>/dev/null
在這個過程之後,腳本需要格式化磁片。
dd
我的問題是我希望我的腳本只有在兩個備份命令(和cp
)都成功的情況下才格式化磁片。例如,如果
dd
因為壞塊而無法複製所有 1.44MB 的磁片,則不要格式化磁片。我如何測試兩個命令是否成功(它們必須單獨測試,因為我並不總是備份磁碟的映像和文件)?
我會做:
ok=true if dd ...; then sync else ok=false fi cp ... || ok=false if "$ok"; then mformat... fi
由於您使用的是 bash,因此只需添加:
set -e
到腳本的開頭,只要任何命令失敗,它就會失敗。