`$*`と`$@`を試しましたが、Bashはまだ3番目の引数の最後の部分を切り取ります。

`$*`と`$@`を試しましたが、Bashはまだ3番目の引数の最後の部分を切り取ります。

私は次の質問を試しました。

docker-composeDockerfileスキャンを実行しています。

私のスクリプトを見てください:

archlinux="pacman"

get_package_manager_install()
{
  if [[ -x "$(command -v $1)" ]]; then
    "$1 $2 $3"
  else        
    echo "Gestor do pacote desconhecido" &>/dev/null;
  fi
}

get_package_manager_install "$archlinux"     "-S --noconfirm --needed" "ca-certificates curl git p7zip wget unzip zstd"
get_package_manager_install "$archlinux"     "-S --noconfirm --needed" "htop micro neofetch neovim zsh"
get_package_manager_install "$archlinux"     "-S --noconfirm --needed" "luit xdotool xdriinfo xorg-appres xorg-iceauth xorg-xcmsdb xorg-xgamma xorg-sessreg xorg-xdpyinfo xorg-xev xorg-xfd xorg-xfontsel xorg-xhost xorg-xkbcomp xorg-xkill xorg-xlsatoms xorg-xlsclients xorg-xlsfonts xorg-xmessage xorg-xmodmap xorg-xprop xorg-xrandr xorg-xrdb xorg-xrefresh xorg-xset xorg-xvidtune xorg-xvinfo xorg-xwininfo"

または。"$1 $2 $3"私も努力しました。$@$*$(echo "$@")$(echo "${@}")

私も成功せずに最後のパラメータをに置き換えました" "' '

たとえば、パラメータの最後の部分を削除すると、git p7zip wget unzip zstd全体がhtop micro neofetch neovim zshインストールされません。

ベストアンサー1

-S--noconfirmおよび--neededパッケージを別の引数として渡す必要があるため、pacman次のようになります。

archlinux="pacman"

get_package_manager_install()
{
  if command -v -- "$1" > /dev/null 2>&1; then
    "$@"
  else        
    echo >&2 "Gestor do pacote desconhecido"
    return 1
  fi
}

get_package_manager_install "$archlinux" -S --noconfirm --needed ca-certificates curl git p7zip wget unzip zstd

get_package_manager_installこれらすべてを別々の引数として where に渡しているget_package_manager_installままに渡しますpacman

3つの引数のみを取り、get_package_manager_install2番目と3番目の引数を空白文字に分割して渡す引数のリストを生成したい場合は、分割+glob演算子を使用できます(コードでpacman忘れたため、誤って使用されます)。$1、glob部分を無効にして$IFS空白に設定した後:

get_package_manager_install() {
  if command -v -- "$1" > /dev/null 2>&1; then
    (
      set -o noglob
      IFS=' '
      exec "$1" $2 $2
    )
  else        
    echo >&2 "Gestor do pacote desconhecido"
    return 1
  fi
}

get_package_manager_install "$archlinux" \
                            '-S --noconfirm --needed'
                            'ca-certificates curl git p7zip wget unzip zstd'

あなたがなぜそのようなことをしたのかは想像できませんが。

archlinuxまた、Linuxディストリビューションの名前であるパッケージマネージャの名前を含む変数名がなぜ指定されたのかわかりません。

おすすめ記事