Kabuktaki $#
anlamı nedir ?
Gibi kod var
if [ $# -eq 0 ]
then
Bunun ne $#
anlama geldiğini anlamak istiyorum , ancak Google araması bu tür şeyleri aramak için çok kötü.
Kabuktaki $#
anlamı nedir ?
Gibi kod var
if [ $# -eq 0 ]
then
Bunun ne $#
anlama geldiğini anlamak istiyorum , ancak Google araması bu tür şeyleri aramak için çok kötü.
Yanıtlar:
Her zaman kabuğunun man sayfasını kontrol edebilirsin. man bash
diyor:
Special Parameters
# Expands to the number of positional parameters in decimal.
Bu nedenle, bir kabuk betiği böyle bir kodla kaç tane parametre verildiğini kontrol edebilir:
if [ "$#" -eq 0 ]; then
echo "you did not pass any parameter"
fi
man
dahil olmak üzere hemen her şeyi yapabilirsiniz man
. Ayrıca apropos
biraz zaman deneyin .
info
, Ya man sayfası ya da paketler varsa ek bilgiler (çok ayrıntılı ve bölümlendirilmiş) kullanmak için kullanabilirsiniz .
Aslında,
`$` refer to `value of` and
`#` refer to `number of / total number`
Yani birlikte
`$#` refer to `The value of the total number of command line arguments passed.`
Böylece, yaptığınız $#
gibi iletilen argümanların / parametrelerin sayısını kontrol etmek ve beklenmeyen durumları ele almak için kullanabilirsiniz.
Benzer şekilde, biz
`$1` for `value of 1st argument passed`
`$2` for 'value of 2nd argument passed`
vb.
Yani
betiğin çağrıldığı parametre sayısı
betiğin içinde ayarlanmış olan parametre sayısı set -- foo bar
(bir işlev içinde kullanıldığında) bir işlevin çağrıldığı parametre sayısı ( set
orada da işe yarar).
Bu, bash adam sayfasında "Özel Parametreler" bloğunda açıklanmıştır.