Bash无法将blkid中的信息存储到变量中

时间:2018-05-15 22:59:14

标签: regex bash blkid

我正在尝试将解析后的字符串的输出存储到变量中。当我像这样运行命令时,我在终端输出上得到正确的输出:

$ blkid | grep -oP '(?<=LABEL=").+?(?=")'
MYUSB_NAME

然而,当我尝试将它存储在这样的变量中时:

$ USB_NAME={blkid | grep -oP '(?<=LABEL=").+?(?=")'}; echo $USB_NAME;
(blank)

它只显示空白区域。有谁知道我在这里做错了什么?

这是完整的blkid输出:

$ blkid
/dev/sda1: UUID="88dd2cc5-0a4f-4477-b678-159613aaf920" TYPE="ext4"
/dev/sda2: UUID="ggxkwK-DZfA-DnTF-dWbn-msx6-egfo-GuGIuS" TYPE="LVM2_member"
/dev/mapper/vg_baldy1-lv_root: UUID="76ab63ba-e8c4-4040-9533-5c8562f739d4" TYPE="ext4"
/dev/mapper/vg_baldy1-lv_swap: UUID="462a170b-5e09-4b98-98ce-09e0a24009ab" TYPE="swap"
/dev/mapper/vg_baldy1-lv_home: UUID="c38c0b9a-1049-4e9f-8800-d68d2e450929" TYPE="ext4"
/dev/sdb1: LABEL="MYUSB_NAME" UUID="BF05-9FC6" TYPE="vfat"

1 个答案:

答案 0 :(得分:1)

{ ... }用于分组命令。将$()用于command substitution

USB_NAME=$(blkid | grep -oP '(?<=LABEL=").+?(?=")')

请参阅: