K: Nem egészen értem a bash manualjában a "Parameter Expansion" című részt. Tudnál valamilyen példát mutatni az ott leírtakra?
V: Micsoda véletlen, épp most csináltam ilyesmit (Futtasd a scriptet, és figyeld a kimenetét!)
#!/bin/bash
unset UNSETV
SETV="value"
INDV="SETV"
echo "-----"
echo "*${INDV}*" Egyszerű behelyettesítés "(INDV)"
echo "*${SETV}*" Egyszerű behelyettesítés "(SETV)"
echo "*${UNSETV}*" Egyszerű behelyettesítés "(UNSETV)"
echo "-----"
echo "*${!INDV}*" Indirekt behelyettesítés "(INDV)"
echo "*${!SETV}*" Indirekt behelyettesítés "(SETV)"
echo "*${!UNSETV}*" Indirekt behelyettesítés "(UNSETV)"
echo "-----"
echo "*${SETV-ha nincs}*" Alapértelmezés "(SETV)"
echo "*${UNSETV-ha nincs}*" Alapértelmezés "(UNSETV)"
echo "-----"
echo "*${SETV=ha nincs}*" Alapértelmezés értékadással"(SETV)"
echo "*${UNSETV=ha nincs}*" Alapértelmezés értékadással"(UNSETV)"
echo "*${UNSETV=default}*" Alapértelmezés értékadással"(UNSETV)"
unset UNSETV
echo "-----"
echo "*${SETV?Hibaüzenet}*" Hibaüzenet"(SETV)"
(echo "*${UNSETV?Hibaüzenet}*" Hibaüzenet"(UNSETV)")
echo "-----"
echo "*${SETV+Alternatíva}*" Alternatíva"(SETV)"
echo "*${UNSETV+Alternatíva}*" Alternatíva"(UNSETV)"
echo "-----"
echo "*${SETV:0:3}*" "Rész-string (előről) :0:3 (SETV)"
echo "*${SETV:(-3):3}*" "Rész-string (hátulról) :-3:3 (SETV)"
echo "-----"
echo "*${!S*}*" "Változók listája prefix alapján (S*)"
echo "-----"
echo "*${#SETV}*" "Változó hossza (SETV)"
echo "-----"
echo "*${SETV#v*}*" "Levágás az elejéről minta alapján (rövid)"
echo "*${SETV##v*}*" "Levágás az elejéről minta alapján (hosszú)"
echo "-----"
echo "*${SETV%*ue}*" "Levágás a végéről minta alapján (rövid)"
echo "*${SETV%%*ue}*" "Levágás a végéről minta alapján (hosszú)"
echo "-----"
echo "*${SETV/[aue]/A}*" "Csere (csak az első előfordulás)"
echo "*${SETV//[aue]/A}*" "Csere (minden előfordulás)"