将多行回显到命令中?
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,因此应该对它们进行转义。
如果我能做这样的事情,对我来说会很有用
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,因此应该对它们进行转义。