私は現在、多くのフロッピーディスクをバックアップし、後で使用するためにフォーマットするための小さなスクリプトを書いています。
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.44 MBをコピーできない場合は、フロッピーディスクをフォーマットしないでください。
これらの2つのコマンドが成功したかどうかをテストします(ディスクのイメージとファイルを常にバックアップしていないため、別々にテストする必要があります)。
答え1
bashを使用しているので、以下を追加します。
set -e
スクリプトの先頭では、コマンドが失敗するたびにスクリプトが失敗します。
答え2
私はそれをします:
ok=true
if dd ...; then
sync
else
ok=false
fi
cp ... || ok=false
if "$ok"; then
mformat...
fi
答え3
以下を試してください。
dd <command>
DD_EXIT_STATUS=$?
cp <command>
CP_EXIT_STATUS=$?
if [[ DD_EXIT_STATUS -eq 0 && CP_EXIT_STATUS -eq 0 ]]; then
format floppy disk
else
... other stuff ...
fi
答え4
~のためエラーを修正あなたの命令:
execute [INVOKING-FUNCTION] [COMMAND]
execute () {
error=$($2 2>&1 >/dev/null)
if [ $? -ne 0 ]; then
echo "$1: $error"
exit 1
fi
}
促すリーン製造では: