我发现了很多主题,但找不到与我的情况完全相符的东西。
当我在脚本中运行以下命令:sudo lshw -C disk -short | grep "/dev/"
时,我的hdds
变量将设置为/dev/sda 32GB VMware Virtual S /dev/cdrom VMware IDE CDR10
。
并且我能够使用awk来删除“ / dev /”,但随后我将使用/ n添加换行符,因此当我执行echo $hdds
时,它将显示类似这样的内容(而不是显示所有内容)一行):
sda 32GB VMware Virtual S
cdrom VMware IDE CDR10
我实际上设法做到了,但是我不能将该结果分配给我的变量。仅在运行live命令时才有输出。
#!/bin/bash
hdds=`sudo lshw -C disk -short | grep "/dev/" | awk '{print $2,$4,$5,$6,$7,$8,$9}'`
hdd=`echo $hdds | awk '{split($hdds,hdd,"/dev/"); print hdd[2]; print " HEY \n"; print hdd[3]}'`
echo $hdd | awk '{print $hdd;}'
感谢您的帮助!当前正在尝试在ubuntu 18.04下执行此操作。
我的最佳猜测是sudo lshw -C disk -short
已经产生了多行输出,而您遇到的主要问题是您没有在echo
处引用参数,在这种情况下,您需要做的是:
hdd=$(sudo lshw -C disk -short | sed -n 's:/dev/::p')
echo "$hdd"
但是没有看到sudo lshw -C disk -short
的输出和预期的最终输出,这只是未经测试的猜测。
请参见https://mywiki.wooledge.org/Quotes和http://mywiki.wooledge.org/BashFAQ/082,以获取有关脚本中引号和对勾问题的信息。