Sziasztok!
Most ismerkedem a bash szkriptekkel, de egy problémára nem találok megoldást. Van egy függvényem, amely két paramétert vár. Azt szeretném, hogy a második paraméter értéke egyezzen meg az elsővel, amennyiben csak egy paraméterrel hívták meg a függvényt. Tehát:
function example() {
if [ -z "$2" ]; then
$2="$1"
fi
}
Ez viszont nem működik. Hogyan van ez helyesen?
- 1043 megtekintés
Hozzászólások
Nevezd el őket:
a="$1"
b="$2"
, aztán ezekkel dolgozz. És persze nem
$a="$b"
, hanem
a="$b"
.
- A hozzászóláshoz be kell jelentkezni
Nevezd el őket
Igen, elnevezéssel valószínűleg működne, de mivel most tanulásról van szó, érdekelne hogy megoldható-e a probléma újabb változó beveztése nélkül.
És persze nem $a="$b", hanem a="$b".
Igaz. Próbálkoztam simán 2-vel és $2-vel is, az utóbbit sikerült beillesztenem a hozzászólásba.
- A hozzászóláshoz be kell jelentkezni
a $2-nek nem tudsz értéket adni a függvényen belül.
param2="$2"
[ -z "${param2}" ] && param2="$1"
- A hozzászóláshoz be kell jelentkezni
De, lasd lejjebb. Csak nem "sima" ertekadassal.
- A hozzászóláshoz be kell jelentkezni
Úgy néz ki akkor marad az elnevezés. Köszönöm mindenkinek a segítséget!
- A hozzászóláshoz be kell jelentkezni
Megoldhato:
$ a() {
> [ $# -eq 1 ] && set -- "$1" "$1"
> printf '%s\n' "$@"
> }
$ a 1 2
1
2
$ a 1
1
1
$
Azaz a set paranccsal at tudod allitani a parametereket is.
- A hozzászóláshoz be kell jelentkezni