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
.