将多行命令回显?

时间:2018-10-05 12:34:22

标签: linux bash echo

如果我可以做这样的事情,这对我非常有用

echo {
aic94xx-firmware*
alsa-firmware
btrfs-progs
centos-logos
iprutils
ivtv*
iwl*firmware
} | rpm -e

其中每个要卸载的软件包都是其单独的行。这只是一个例子,但是如果在Bash中可能发生这种情况,那么我也将其应用于其他情况。

问题

是否可以在命令中回显某种HEREDOC?

2 个答案:

答案 0 :(得分:3)

使用反斜杠将命令分成多行。

rpm -e \
    aic94xx-firmware'*' \
    alsa-firmware \
    btrfs-progs \
    centos-logos \
    iprutils \
    ivtv'*' \
    iwl'*'firmware

或使用数组。不需要反斜杠。

packages=(
    aic94xx-firmware'*'
    alsa-firmware
    btrfs-progs
    centos-logos
    iprutils
    ivtv'*'
    iwl'*'firmware
)

rpm -e "${packages[@]}"

请注意,无论哪种方式,我都引用了星号。您希望rpm解释glob,而不是shell,因此应将其转义。

答案 1 :(得分:-3)

您可以为此使用xargs

echo "aic94xx-firmware* alsa-firmware btrfs-progs centos-logos iprutils ivtv* iwl*firmware" | xargs rpm -e