GNU/Linux >> Belajar Linux >  >> Linux

Linux Memisahkan Array Menjadi Variabel Terpisah?

Saya telah memprogram di MVS selama bertahun-tahun dan baru-baru ini menggunakan Linux, jadi keterampilan Linux saya belum terlalu bagus, tetapi saya memahami konsep pengembangan dengan baik.

Apa yang saya coba lakukan adalah membaca direktori file dan mengambil nama semua file dengan ekstensi .trg. Kemudian, saya perlu mengambil nama-nama itu dan menyimpannya dalam variabel terpisah sehingga saya dapat menggunakannya nanti di skrip saya untuk merujuk ke komponen dan menggunakannya untuk penamaan file. Saya mendapatkan nama file menggunakan perintah find:

param=`find *${file_name}*.trg

Ini menghasilkan variabel $param yang dimuat dengan nilai-nilai (ABC1099R ABC1099C) karena keduanya adalah dua file dalam direktori bernama ABC1099R.trg dan ABC1099C.trg. Sekarang saya perlu menetapkan nilai-nilai itu ke variabel individual sehingga saya dapat menggunakannya nanti di skrip saya. Saya telah mencari tinggi dan rendah di web, tetapi setiap contoh yang saya temukan menggunakan gema untuk hanya menampilkannya atau mereka menggunakan loop do while dan menggunakan nilai individual di dalam loop. Saya perlu menetapkan mereka ke variabel mereka sendiri sehingga mereka tersedia untuk saya nanti di skrip.

Awalnya saya mencoba for do loop seperti ini:

for trigger_files in $param; do
    app1=(basename "{trigger_files}" .trg).dat
done

Tapi itu hanya memberikan kemunculan pertama app1=ABC1099R

Saya perlu menyimpan semua kejadian ke variabel masing-masing. Mungkin ada 20 nama file, tapi saya pikir saya hanya perlu membuatnya bekerja dengan dua, oleh karena itu akan mampu menangani banyak.

Jawaban yang Diterima:

Jika Anda menggunakan bash, pertimbangkan untuk melakukannya dengan cara bash.

Array Anda akan diperoleh dengan demikian (tidak ada find external eksternal perintah):

params=( *${file_name}*.trg )

dan kemudian Anda mengulang array seperti ini:

for file in "${params[@]}"; do
    echo "I'm happily reading the beautiful file $file"
done

Jika Anda ingin menghapus .trg ekstensi dan ganti dengan .banana :

for file in "${params[@]}"; do
    echo "My gorilla loves the file ${file%.trg}.banana"
done

Metode ini, dengan kutipan yang tepat, akan 100% aman untuk file dengan simbol lucu di namanya.

Keterangan. Selalu gunakan globbing dengan shopt -s nullglob atau shopt -s failglob .


Linux
  1. Linux – Semuanya Adalah File?

  2. Baca File Ke Array?

  3. Bagaimana cara mengonversi image disk Linux menjadi file jarang?

  1. Cara memindahkan file di Linux

  2. Memahami Izin File Linux

  3. Apakah hasil edit file di Linux langsung disimpan ke dalam disk?

  1. Perintah Ekor Linux

  2. Perintah Sentuh Linux

  3. Perintah Cat di Linux