【问题标题】:Script improvement suggestions [closed]脚本改进建议 [关闭]
【发布时间】:2013-02-11 20:55:54
【问题描述】:

以下脚本用于检查 Macintosh 上任何驱动器的 SMART 状态。

它工作得很好,但我想知道是否有更优雅的方法来首先列出,然后循环查看来自 diskutil list | grep /dev/ 的所有结果,因为该命令将始终列出所有连接的设备,从而使脚本可移植.

在不首先输出到 $DISKLIST 日志文件的情况下,有没有更好的方法来做到这一点?也欢迎其他建议!

# Check SMART status

DISKLIST=`mktemp -t DISK-XXXXX.log`

diskutil list | grep /dev/ > $DISKLIST

for i in  `cat $DISKLIST` ;

do

STATUS=$(diskutil info $i | awk -F': *' '/SMART/{print $2}')

if [ "$STATUS" = "Verified" ]; then
        echo "SMART Status OK for disk $i" 
else

        echo "** SMART Status $STATUS for disk $i **" 
fi

done

rm $DISKLIST

例如,这些是脚本中的键盘命令的典型结果:

$ diskutil list | grep /dev/
/dev/disk0
/dev/disk1
/dev/disk2
/dev/disk3
/dev/disk4
/dev/disk5
/dev/disk6
/dev/disk7
/dev/disk8

【问题讨论】:

  • 试试 codereview 网站。我们在这里帮助解决问题,而不是批评/改进代码。

标签: macos bash shell


【解决方案1】:

您可以使用命令替换:

for i in $(diskutil list | grep /dev/)
do 
....

命令的输出直接替换在 for 循环中,不需要 DISKLIST 文件。更多信息请访问abs:command substitution

【讨论】:

  • 太棒了,谢谢!我很高兴我问了。
猜你喜欢
  • 1970-01-01
  • 2013-10-27
  • 2017-03-21
  • 1970-01-01
  • 2010-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多