将多行回显到命令中?

Echo multiple lines into command?

如果我能做这样的事情,对我来说会很有用

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

每个要卸载的包单独占一行。这只是一个例子,但如果这样的事情在Bash中是可能的,那么我也会将它应用到其他情况。

问题

是否可以将一种 HEREDOC 回显到命令中?

您可以为此使用 xargs

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

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

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,因此应该对它们进行转义。