Apakah ada cara untuk membuat variabel bash dan menetapkan nilai-nilai melalui loop?
Sesuatu di sepanjang garis:
#!/bin/bash
c=0
for file in $( ls ); do
var"$c"="$file";
let c=$c+1;
done
EDIT: Terima kasih kepada @Costas dan @mdpc untuk menunjukkan ini akan menjadi alternatif yang buruk untuk daftar; pertanyaannya hanya teoretis.
bash
shell
shell-script
toxefa
sumber
sumber
var"$c"
istirahat itu. Jawaban @Costas menunjukkan bagaimana cara menetapkan beberapa nilai ke variabel daftar tunggal - Saya hanya bertanya secara teoritis apakah variabel sebenarnya dapat dihasilkan dengan satu loop.Jawaban:
Nah, Anda benar-benar dapat menggunakan eval sebagai berikut:
Kode ini akan membuat variabel bernama var0, var1, var2, ... dengan masing-masing memegang nama file. Saya berasumsi Anda akan memiliki alasan yang bagus untuk melakukannya daripada menggunakan array ...
sumber
Mungkin maksudmu array. Ada beberapa cara untuk menetapkan nilai
Pertama:
Kedua:
Ketiga:
Keempat:
Kelima
...
ls
, cukup masukkan*
semua file[]
dalam$
tanda itu dapat dihilangkansumber
echo $var
dengan perintah yang Anda sebutkan di atas saya hanya mendapatkan file pertama 'terdaftar' olehls
. Apakah saya melakukan sesuatu yang salah?echo ${var[*]}
(atau${var[@]}
), elemen tunggal bisa disebut sepertiecho ${var[1]}
. Catatan:$var
sama${var[0]}
for v in "${var[@]}";do echo $v;done