## declare, értékadás plusz valami
alias setarray='declare -a t
t=(q w e)
pwd
asfasdf
'
setarray
echo t=${t[@]}
# t=pwd asfasdf q w e
## test failed
[/code]
nem a soremeléssel van a gond.
úgy tűnik, bármi ami "változó=(...)" után van, soremelést figyelmen kívül hagyva a tömb elejéhez fűzi.
- bAndie9100 blogja
- A hozzászóláshoz be kell jelentkezni
- 780 megtekintés
Hozzászólások
Érdekes, köszi :) zsh-ban pl jónak tűnik.
- A hozzászóláshoz be kell jelentkezni
nyos@hex:~$ alias setarray='a=(q w e);pwd'
nyos@hex:~$ setarray
/home/nyos
nyos@hex:~$ echo a=${a[@]}
a=q w e
--
Is that a banana in your pocket, or are you just happy to see me?
Neither, it's my new iPhone.
- A hozzászóláshoz be kell jelentkezni
hmm így még nem próbáltam.
így a várt módon működik.
azért érdekes, hogy nem konzisztens a soremelés értelmezése...
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni
De, konzisztens. Azonban aposztrofon beluli sztringnel whitespace-kent ertelmezi, behelyettesitesnel pedig sima space lesz belole, ami nem szamit utasitaselvalaszto karakternek.
--
Blog | @hron84
Üzemeltető macik
- A hozzászóláshoz be kell jelentkezni
De ez mind nem magyarázza meg, hogy mi módon került a tömb végéről a tömb elejére.
- A hozzászóláshoz be kell jelentkezni
ezt értem inkonzisztencia alatt:
alias a='pwd
pwd;'
a
# kimenet:
# /tmp
# /tmp
ha behelyettetsítés alatt aliasz kibontást értesz, akkor se igaz, hogy az aliasz definícióban lévő LF-ből SP válna, hisz lefuttat két parancsot.
alias a='pwd
tomb=(1 2 3)
pwd;'
a
echo ${tomb[@]}
# kimenet:
# /tmp
# pwd 1 2 3
itt a 2. és azutáni LF-eket nem veszi parancs elválasztónak. ezt értem inkonzisztencia alatt.
ugyanakkor érdekes, hogy ha az aliasz elején van a tömbértékadás, akkor jó:
alias a='tomb=(1 2 3)
pwd;'
a
echo ${tomb[@]}
# kimenet:
# /tmp
# 1 2 3
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni
Hát ez eléggé durva. Érteni egyelőre nem nagyon értem, hogy vajon hol tud ennyire eltévedni, vagy hogy mit is akar csinálni akkor, amikor a soremelést elkezdi valahogy másként értelmezni. (Persze a vicc kedvéért megnéztem Korn-shell alatt is. A pdksh és a ksh93 is ismeri a tömbváltozót, az újabb ksh93 már a bash-féle szintaxist is, a korábbiak és a pdksh csak a "set -A lo 1 2 3" formájút. Nem meglepő módon ezek a hibák azokban nincsenek meg, pont úgy működnek, ahogy elvárjuk tőlük. /off )
- A hozzászóláshoz be kell jelentkezni