BASH在同一行上获取输出
我有raid设置,我想将设备ID与安装的驱动器匹配。谢天谢地,输出是相同的0-15。我正在使用的以下命令是:BASH在同一行上获取输出,bash,Bash,我有raid设置,我想将设备ID与安装的驱动器匹配。谢天谢地,输出是相同的0-15。我正在使用的以下命令是: MegaCli -LdpdInfo -a0 | awk '/Target Id:/ {print $3}' MegaCli -LdpdInfo -a0 | awk '/Device Id:/ {print $3}' lsscsi | awk '/MR9260-16i/ {print $6}' 我正在编写一个简单的脚本,它从一个put开始工作,然后我添加了第二个输出,该输出不工作,但
MegaCli -LdpdInfo -a0 | awk '/Target Id:/ {print $3}'
MegaCli -LdpdInfo -a0 | awk '/Device Id:/ {print $3}'
lsscsi | awk '/MR9260-16i/ {print $6}'
我正在编写一个简单的脚本,它从一个put开始工作,然后我添加了第二个输出,该输出不工作,但在第一个输出之后添加了结果,如下所示:
/dev/sdb
/dev/sdc
/dev/sdd
/dev/sde
/dev/sdg
/dev/sdh
/dev/sdi
/dev/sdj
/dev/sdk
/dev/sdl
/dev/sdm
/dev/sdn
/dev/sdo
/dev/sdp
/dev/sdq
/dev/sdr: 104
113
210
211
212
216
217
218
219
220
221
222
223
224
225
226
我说“废话…没用”总之这是我的剧本
# Prints the Device ID of each drive on the Raid Controller.
perform_target() {
MegaCli -LdpdInfo -a0 | awk '/Device Id:/ {print $3}'
}
# Prints each mounted drive out that is on the Raid Card.
perform_drive() {
lsscsi | awk '/MR9260-16i/ {print $6}'
}
printf ' %s\n' "$(perform_drive)" "$(perform_target)";
如果在单独的文件中有两列,可以使用
粘贴将它们连接起来:
$ cat file1
/dev/sdb
/dev/sdc
/dev/sdd
$ cat file2
104
113
210
$ paste file1 file2
/dev/sdb 104
/dev/sdc 113
/dev/sdd 210
您不需要调用MegaCli两次:
MegaCli -LdpdInfo -a0 | awk <<'EOF'
/Target Id:/ {printf("%s: ", $3)}
/Device Id:/ {print $3}
EOF
MegaCli-LdpdInfo-a0 | awk如果您显示MegaCli和lsscsi命令的输出并解释您试图实现的目标,而不是告诉我们什么不起作用,您可能会发现您会得到更好的答案…@Mark我试图实现的是让输出在同一行上,如:/dev/sdb 104/dev/sdc 113等,等。这将匹配什么挂载是什么设备ID。没有做大量的研究和手动工作。随后,此信息可用于使用hdparm、DD和Smartctl(需要DeciveID和Mount才能工作)、小时数和擦除测试SAS驱动器。这是一个小项目,将导致一个更大的项目。原始提问者场景的一行是粘贴这似乎可行,并感谢您,感谢其他人和Artemb谢谢,这将使事情变得像这个脚本一样简单,因为以后会变得更复杂。我发现它工作得更好一些MegaCli-LdpdInfo-a0 | awk'/Target Id:/{printf(“%s”,$3)}/Device Id:/{print$3}