diff --git a/extras/check-is-installed b/extras/check-is-installed index 32518154..966d9ba4 100755 --- a/extras/check-is-installed +++ b/extras/check-is-installed @@ -5,41 +5,39 @@ readonly ACE_ENVIRONMENTS=( "deepin23-run:amber-ce-deepin23" "sid-run:amber-ce-sid" ) -dpkg -s "$1" > /dev/null +dpkg -s "$1" > /dev/null 2>&1 RET="$?" -if [[ "$RET" != "0" ]] &&[[ "$IS_ACE_ENV" == "" ]];then ## 如果未在ACE环境中 +if [[ "$RET" != "0" ]] && [[ "$IS_ACE_ENV" == "" ]];then ## 如果未在ACE环境中 - - -for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do - ace_cmd=${ace_entry%%:*} - if command -v "$ace_cmd" >/dev/null 2>&1; then + for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do + ace_cmd=${ace_entry%%:*} + if command -v "$ace_cmd" >/dev/null 2>&1; then + echo "----------------------------------------" + echo "正在检查 $ace_cmd 环境的安装..." + echo "----------------------------------------" + + # 在ACE环境中使用dpkg -s检查安装状态 + # 使用dpkg -s并检查输出中是否包含"Status: install ok installed" + $ace_cmd bash -c "dpkg -s '$1' 2>/dev/null | grep -q 'Status: install ok installed'" + try_run_ret="$?" + + # 最终检测结果处理 + if [ "$try_run_ret" -eq 0 ]; then echo "----------------------------------------" - echo "正在检查 $ace_cmd 环境的安装..." + echo "在 $ace_cmd 环境中找到了安装" + echo "----------------------------------------" + exit $try_run_ret + else + echo "----------------------------------------" + echo "在 $ace_cmd 环境中未能找到安装,继续查找" echo "----------------------------------------" - - # 在ACE环境中执行安装检测 - $ace_cmd dpkg -l | grep "^ii $1 " > /dev/null - try_run_ret="$?" - - - # 最终检测结果处理 - if [ "$try_run_ret" -eq 0 ]; then - echo "----------------------------------------" - echo "在 $ace_cmd 环境中找到了安装" - echo "----------------------------------------" - exit $try_run_ret - else - echo "----------------------------------------" - echo "在 $ace_cmd 环境中未能找到安装,继续查找" - echo "----------------------------------------" - fi fi - done - echo "----------------------------------------" - echo "所有已安装的 ACE 环境中未能找到安装,退出" - echo "----------------------------------------" - exit "$RET" - fi + fi + done + echo "----------------------------------------" + echo "所有已安装的 ACE 环境中未能找到安装,退出" + echo "----------------------------------------" + exit "$RET" +fi ## 如果在ACE环境中或者未出错 exit "$RET"