Элементы, разделенные пробелом, отображаются как один выбор в Zenity / Yad --list - PullRequest
0 голосов
/ 02 июля 2019

Я пишу adb-toolkit и застрял в функции apk extract, где мне нужно перечислить установленные пакеты телефона в yad / zenity.

Позволяет выбрать один раз, когда я использую предыдущий код выбора устройства, но не работает с измененным кодом.

Вот прежний выбор устройства

adb start-server 2>/dev/null
  adb devices>/tmp/devices.txt
  sed -i '1d' /tmp/devices.txt
  dl=$(sed 's/\device//g' /tmp/devices.txt)
  device=$(zenity --list --text="Choose a device" --column="Devices" $dl --width=300 --height=200 2>/dev/null)


Вотвыбор устройства с рефакторингом:

adb start-server 2>/dev/null
  adb devices>/tmp/devices.txt
  sed -i '1d' /tmp/devices.txt

  get_index(){
        local value="$1"
        shift
        local arr=("$@")
        for j in "${!arr[@]}";
        do
                if [[ "${arr[$j]}" == "${value}" ]]; then
                        index="${j}"
                        return
                fi
       done
}  
  x=()
  read -r stat < /tmp/devices.txt
  if [ "$stat" == "" ]; then
    zenity --error --text="No devices connected" --title="No device" --width=300 >/dev/null 2>&1
  else
    while read -r dev || [[ -n $dev ]]; do
    IFS='|'; for i in $dev; do
      if [ "$i" != "" ]; then
      x+=("$(sed 's/[[:space:]].*//g' <<<$i)")
      if [ "$(grep -o -w device <<<$i)" == "device" ]; then
        x+=("authorized")
      else
        x+=("$(sed 's/.*[[:space:]]//g' <<<$i)")
      fi
      else continue
    fi
    done
  done < /tmp/devices.txt
  #dl=$(sed 's/\device//g' /tmp/devices.txt)
  device=$(yad --list --text="Choose a device" --column="Devices" --column="Status" ${x[@]} --print-column=1 --no-click --center --width=300 --height=200  2>/dev/null)

А вот код выбора пакета:

apk=$(adb -s $device shell pm list packages)

opt=$(zenity --list --mid-search --column="Apps" ${apk} --width=600 --height=600 2>/dev/null)

1 Ответ

0 голосов
/ 04 июля 2019

Нашел проблему,

IFS вызывал проблемы, потому что в файле не было разделителя

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...