Ravi'nin yorumu esasen cevaptır. Fonksiyonlar kendi argümanlarını alır. Bunların komut satırı argümanlarıyla aynı olmasını istiyorsanız, bunları iletmelisiniz. Aksi takdirde, açıkça argümansız bir işlevi çağırırsınız.
Bununla birlikte, komut satırı bağımsız değişkenlerini diğer işlevler içinde kullanmak için genel bir dizide depolamak isterseniz yapabilirsiniz:
my_function() {
echo "stored arguments:"
for arg in "${commandline_args[@]}"; do
echo " $arg"
done
}
commandline_args=("$@")
my_function
Sen aracılığıyla komut satırı argümanları erişmek zorunda commandline_args
değil, değişken $@
, $1
,$2
vb, ancak uygun olduğunda. Doğrudan argüman dizisine atamanın herhangi bir yolunun farkında değilim, ancak birisi biliyorsa, lütfen beni aydınlatın!
Ayrıca, kullandığım ve alıntı yaptığım yönteme dikkat edin $@
- bu, özel karakterlerin (beyaz boşluk) karıştırılmamasını sağlama yöntemidir .