Mikäs tämän skriptin parametrikäsittelyssä on pielessä ?
Jos tuolle antaa parametriksi *
niin se käyttäytyy kuin sille olisi annettu tasan 1 parametri, eli ensimmäisen tiedoston nimi, joka tulostuisi komennolla ls -l
Sensijaan komento echo *
tulostaa kaikkien hakemistossa olevien tiedostojen nimet.
Mistä tämä ero ?
=======================================
#/bin/bash
# echo param: a$1b
# echo
ln -s /media/sda6/dvd_iso/$1 $1_2
=======================================
Jos tuolle antaa parametriksi *
niin se käyttäytyy kuin sille olisi annettu tasan 1 parametri, eli ensimmäisen tiedoston nimi, joka tulostuisi komennolla ls -l
Sensijaan komento echo *
tulostaa kaikkien hakemistossa olevien tiedostojen nimet.
Mistä tämä ero ?
=======================================
#/bin/bash
# echo param: a$1b
# echo
ln -s /media/sda6/dvd_iso/$1 $1_2
=======================================
Vastaukset 1
Vanhimmat
Bash-skriptin ensimmäinen parametri on $1, toinen $2, jne. $0 on skriptin nimi.
"$@" pitää sisällään kaikki parametrit poislukien skriptin nimen.
Jos haluat tehdä skriptissäsi jonkin jutun kaikille parametreille, voit tehdä sen esimerkiksi for-silmukassa näin:
for param in "$@"; do
echo "nyt käsittelen parametrin $param"
done