从条件右侧(子)表达式分配 var

从条件右侧(子)表达式分配 var

寻找一种在分配变量时将变量保留在左侧的方法,但我还没有找到简洁的方法。

  [[ "${selections[@]}" =~ "${package}" ]] && is_pkg_selected=true || is_pkg_selected=false
  test_package_loaded $package && is_pkg_installed=true || is_pkg_installed=false

  # ideal would be like...
  is_pkg_selected=$([[ "${selections[@]}" =~ "${package}" ]])
  is_pkg_installed=$(test_package_loaded $package && true || false)

有任何想法吗?一起读取多行变量非常困难。

脚本在运行 Raspbian 的 RaspberryPi 上运行,因此更喜欢尽可能sh的方法。

答案1

你可以做

is_pkg_selected=$([[ "${selections[@]}" =~ "${package}" ]] && echo true || echo false)
is_pkg_installed=$(test_package_loaded "$package" && echo true || echo false)

也就是说,您需要echo在命令替换中显式使用或类似的内容来输出要分配给变量的文本。 (记住,它是文本,true而且false只有字符串。)

相关内容