【发布时间】:2020-06-05 06:36:07
【问题描述】:
我找到了很多主题,但找不到与我的确切情况相符的内容..
当我在脚本中运行以下命令时: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
我确实做到了,但我无法将该结果分配给我的变量。只有当我在运行实时命令时获得输出时。
#!/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 下执行此操作。
【问题讨论】:
-
您的代码存在很多问题(缺少引号、不推荐使用的反引号、尝试在 awk 脚本中使用 shell 变量等),如果您说希望
echo $myvar拥有如果这真的是您想要的,或者您的意思是echo "$myvar"或echo "$hdd",那么声明的值就是它的意图,但看起来您正在尝试将sudo lshw -C disk -short的输出转换为其他格式。如果是这样,那么请edit 你的问题显示sudo lshw -C disk -short的输出加上你想要的最终输出作为输入,并解释转换。 -
您好,感谢您的回复,并对我提出问题的方式感到抱歉。正如你所问的,我确实根据你的建议重新制定了不同的形式。谢谢!
-
我真的希望您只是按照我的要求向我们展示
sudo lshw -C disk -short的输出,而不是在运行@ 后向我们展示“myhddsvar”的内容987654335@ 因为我强烈怀疑问题出在您调用echo以显示变量内容但没有看到原始命令输出的方式上,这是一个猜测。我还希望您能显示最终的预期输出,因为您有一个正在打印HEY的脚本,但字符串HEY并没有出现在您向我们展示的输出中的任何位置,所以我知道存在什么关系。
标签: bash variables awk printing echo