我认为这是一个简单的语法问题,但我一直无法找到类似于我想要做的另一个例子。我有一个变量接受特定的磁盘位置,我需要在hdparm / grep命令中使用该位置来拉出最大LBA
targetDrive=$1 #/dev/sdb
maxLBA=$(hdparm -I /dev/sdb |grep LBA48 |grep -P -o '(?<=:\s)[^\s]*') #this works perfect
maxLBA=$(hdparm -I $1 |grep LBA48 |grep -P -o '(?<=:\s)[^\s]*') #this fails
我也试过
maxLBA=$(hdparm -I 1 |grep LBA48 |grep -P -o '(?<=:\s)[^\s]*')
maxLBA=$(hdparm -I "$1" |grep LBA48 |grep -P -o '(?<=:\s)[^\s]*')
感谢您的帮助
答案 0 :(得分:0)
所以我认为这是解决问题的方法。我和你做的基本相同,但改变了我将结果传递给彼此的方式。
这是我生成的bash脚本。
#!/bin/bash
target_drive=$1
max_lba=$(sudo hdparm -I "$target_drive" | grep -P -o ".+LBA48.+:.+(\d+)" | cut -d: -f2 | tr -d ' ')
echo "Drive: $target_drive MAX LBA48: $max_lba"