因此,正如标题所示,我正在尝试创建一个预期脚本,该脚本将在我损坏的驱动器上运行fsck 。目标是修复驱动器,以便我可以安装它并从中恢复数据。
手动运行命令时,我得到:
超级块或分区表都可能损坏!中止你?
如果我说“否”,它将开始检查,我会收到:
/dev/footage/TrickCeratops 包含有错误的文件系统,强制检查。通过 1:检查 inode、块和大小在从扫描中获取下一个 inode 时读取块 1221066784(无效参数)时出错。忽略错误 y?
然后我可以说“是”继续前进,它会再次提示我:
强制重写 y ?
这就是我遇到问题的地方......我可以自动化前两个答案,但无法让我的期望脚本在“强制重写?”中回答“是” 。如果我可以让它回答第二个和第三个问题,是的,那么我需要循环它直到完成。
到目前为止,我的脚本如下所示:
#!/bin/bash
expect -c'
set timeout -1
set temp password
spawn ./e2fsckscript.sh
expect "password for user:"
send "$temp\r"
expect "Abort<y>?"
send "no\r"
expect {
"Ignore error<y>?"{
send "yes\r"
}
"Force rewrite<y>?"{
send "yes\r"
}
exp_continue
}
'
“ spawn ./e2fsckscript.sh”只运行一个命令:
sudo e2fsck -b 32768 /dev/footage/TrickCeratops