GNU/Linux >> Belajar Linux >  >> Ubuntu

Apakah A For Loop Menggunakan Array Lebih Baik Daripada Menggunakan Pemisahan Bidang Pada Variabel Sederhana?

Saya memiliki beberapa aplikasi yang terbuka. Menjalankan wmctrl dan menyalurkan output ke awk mencantumkan ID jendela (tidak termasuk jendela "lengket") seperti ini:

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

Saya dapat mengirim output ini ke wmctrl untuk menutup semua jendela ini:

  • windows tanpa konten yang perlu disimpan dan windows yang tidak memerlukan respons akan ditutup tanpa meminta saya tetapi

  • jendela seperti editor dengan konten yang belum disimpan atau terminal yang menjalankan proses akan ditutup "dengan anggun":aplikasi masing-masing akan menampilkan jendela yang memungkinkan saya untuk menyimpan perubahan atau membuang perubahan atau memberi tahu saya tentang proses yang masih berjalan.

Skrip berikut, ditetapkan ke pintasan yang sesuai, berfungsi:

#!/bin/bash

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

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

Saya menemukan bahwa yang lebih sederhana (bagi saya) for i in $list juga berfungsi.

Apakah ada alasan untuk memilih salah satu dari yang lain?

"lengket" dan "dengan anggun" adalah istilah dari man wmctrl .

Jawaban yang Diterima:

Dalam skrip Anda $list sama dengan ${list[@]} .

Yang terakhir adalah sintaks array, tetapi dalam skrip Anda itu adalah variabel normal.

Karena Anda tidak memiliki spasi di wmctl . Anda item keluaran, Anda tidak memerlukan array, dan menggunakan $list baik-baik saja.

Jika adalah sebuah larik, $list hanya akan menjadi item pertama dari array (=> item1 ) dan ${list[@]} akan diperluas ke semua item (=> item1 item2 item3 ).

Tapi apa yang sebenarnya Anda inginkan jika itu benar-benar adalah array adalah "${list[@]}" (dengan tanda kutip) hingga "item1" "item2" "item3" , sehingga tidak akan tersedak spasi.

(Baca)


Ubuntu
  1. Jadikan Wmctrl Abaikan Windows Workspace Selain Saat Ini?

  2. Linux Vs Windows – Mengapa Linux Lebih Baik Untuk Pemrograman &Web Dev

  3. Menggunakan variabel di jalur perintah untuk ExecStart di layanan systemd

  1. [Linux]:Mendiagnosis Masalah Jaringan menggunakan MTR – lebih baik daripada traceroute!

  2. Linux vs Windows:OS Mana yang Lebih Baik untuk Game PC

  3. Ada yang Lebih Baik Dari Keju Untuk Pengambilan Video?

  1. Pengalih Aplikasi yang Lebih Baik Untuk Budgie Desktop?

  2. Mengapa VPS Linux merupakan pilihan yang lebih baik daripada VPS Windows

  3. Apakah (Ubuntu) algoritma penyalinan file Linux lebih baik daripada Windows 7?