GNU/Linux >> Znalost Linux >  >> Ubuntu

Je smyčka For využívající pole lepší než použití dělení pole na jednoduché proměnné?

Mám otevřených několik aplikací. Spuštění wmctrl a nasměrování výstupu do awk uvádí ID oken (kromě „slepých“ oken) takto:

$ wmctrl -l | awk ' !/-1/ { print $1 } '
0x00a00018
0x04800005
0x04e00005
0x04400003
0x05000003
0x0540002b
0x05a00012
0x05800002
0x05c00003
$ 

Mohu poslat tento výstup do wmctrl zavřete všechna tato okna:

  • okna bez obsahu, který je třeba uložit, a okna, která nevyžadují odpověď, se zavřou bez dotazu, ale

  • okna, jako jsou okna editorů s neuloženým obsahem nebo terminály se spuštěným procesem, budou „slušně“ uzavřeny:příslušná aplikace zobrazí okno, které mi umožní uložit změny nebo změny zahodit nebo mě informovat o procesu, který stále běží.

Funguje následující skript přiřazený vhodné zkratce:

#!/bin/bash

list=$(wmctrl -l | awk ' !/-1/ { print $1 } ')

for i in ${list[@]}
do
    wmctrl -i -a $i
    wmctrl -i -c $i
done

Zjistil jsem, že jednodušší (pro mě) for i in $list také funguje.

Existuje nějaký důvod upřednostňovat jedno před druhým?

„sticky“ a „ladně“ jsou výrazy z man wmctrl .

Přijatá odpověď:

Ve vašem skriptu $list je stejný jako ${list[@]} .

To je syntaxe pole, ale ve vašem skriptu je to normální proměnná.

Protože ve vašem wmctl nemáte žádné mezery výstupní položky, nepotřebujete pole a pomocí $list je naprosto v pořádku.

Pokud bylo pole, $list by byla pouze první položkou pole (=> item1 ) a ${list[@]} by se rozšířil na všechny položky (=> item1 item2 item3 ).

Ale co jste opravdu chtěli, pokud to ve skutečnosti bylo pole je "${list[@]}" (s uvozovkami), které sahá až do "item1" "item2" "item3" , takže by se nedusila mezerami.

(Přečíst)


Ubuntu
  1. Nechat Wmctrl ignorovat jiná než aktuální Windows Workspace?

  2. Je něco lepšího než sýr pro natáčení videa?

  3. Lepší přepínač aplikací pro Budgie Desktop?

  1. [Linux]:Diagnostikujte síťové problémy pomocí MTR – lepší než traceroute!

  2. Použití proměnné v cestě příkazu pro ExecStart ve službě systemd

  3. Je algoritmus pro kopírování souborů (Ubuntu) Linux lepší než Windows 7?

  1. Linux vs Windows:Který OS je lepší pro PC hry

  2. Proč je Linux VPS lepší volbou než Windows VPS

  3. Linux vs Windows – Proč je Linux lepší pro programování a vývoj webu