如何将命令输出视为文本

int*_*ore 5 bash string command output

我需要将命令输出与字符串进行比较。这是场景:

pvs_var=$(pvs | grep "sdb1") 
Run Code Online (Sandbox Code Playgroud)

所以 pvs var 是:/dev/sdb1 vg_name lvm2 a-- 100.00g 0

if [[ $($pvs_var | awk '{ print $2 }') = vg_name ]]; then
    do something
fi
Run Code Online (Sandbox Code Playgroud)

问题是 if 语句的输出是

-bash: /dev/sdb1: Permission denied
Run Code Online (Sandbox Code Playgroud)

我不明白这种行为。谢谢

Pes*_*hke 12

您试图将 的内容$pvs_var作为命令执行,而不是将字符串传递给 awk。

要解决此问题,请在 if 语句中添加echo或printf:

if [[ $(echo "$pvs_var" | awk '{ print $2 }') = vg_name ]]; then
    do something
fi
Run Code Online (Sandbox Code Playgroud)