9.3. ¸Å°³º¯¼ö ġȯ(Parameter Substitution)

º¯¼ö¸¦ Á¶ÀÛÇϰųª È®Àå½Ã۱â

${parameter}

º¯¼öÀÎ parameterÀÇ °ªÀ̶õ ¶æÀ¸·Î¼­, $parameter¶ó°í ÇÑ °Í°ú °°½À´Ï´Ù. ¾î¶² ¹®¸Æ¿¡¼­´Â ${parameter}¶ó°í È®½ÇÈ÷ ½á Áà¾ß µ¿ÀÛÇÏ´Â ¼öµµ ÀÖ½À´Ï´Ù.

¹®ÀÚ¿­ º¯¼öµéÀ» ¿¬°áÇÒ ¶§ ¾²ÀÏ ¼ö ÀÖ½À´Ï´Ù.

your_id=${USER}-on-${HOSTNAME}
echo "$your_id"
#
echo "Old \$PATH = $PATH"
PATH=${PATH}:/opt/bin  # ½ºÅ©¸³Æ®°¡ µµ´Â µ¿¾È $PATH ¿¡ /opt/bin À» Ãß°¡.
echo "New \$PATH = $PATH"

${parameter-default}

¸Å°³º¯¼ö°¡ ¼¼Æ®µÇÁö ¾Ê¾Ò´Ù¸é default¸¦ »ç¿ëÇÕ´Ï´Ù.

echo ${username-`whoami`}
# $usernameÀÌ ¿©ÀüÈ÷ ¼¼Æ®µÇ¾î ÀÖÁö ¾Ê´Ù¸é `whoami`ÀÇ °á°ú¸¦ ¿¡ÄÚ.

Âü°í: ÀÌ·¸°Ô Çϸé ${parameter:-default}¶ó°í ÇÏ´Â °Í°ú °ÅÀÇ ºñ½ÁÇÏÁö¸¸ :ÀÌ ÀÖÀ» ¶§´Â ¸Å°³º¯¼ö°¡ ¼±¾ð¸¸ µÇ¾î °ªÀÌ ³ÎÀÏ °æ¿ì¿¡µµ ±âº»°ªÀ» Àû¿ë½Ãŵ´Ï´Ù.

#!/bin/bash

username0=
# username0 ´Â ¼±¾ð¸¸ µÇ°í ³Î·Î ¼¼Æ®µÆ½À´Ï´Ù.
echo "username0 = ${username0-`whoami`}"
# ¿¡ÄÚ µÇÁö ¾Ê½À´Ï´Ù.

echo "username1 = ${username1-`whoami`}"
# username1 ´Â ¼±¾ðµÇÁö ¾Ê¾Ò½À´Ï´Ù.
# ¿¡ÄÚ µË´Ï´Ù.

username2=
# username2 ´Â ¼±¾ð¸¸ µÇ°í ³Î°í ¼¼Æ®µÆ½À´Ï´Ù.
echo "username2 = ${username2:-`whoami`}"
# Á¶°Ç Å×½ºÆ®½Ã - °¡ ¾Æ´Ï°í :- ¸¦ ½è±â ¶§¹®¿¡ ¿¡ÄÚ µË´Ï´Ù.

exit 0

${parameter=default}, ${parameter:=default}

¸Å°³º¯¼ö°¡ ¼¼Æ® µÇ¾î ÀÖÁö ¾Ê´Ù¸é ±âº»°ªÀ¸·Î ¼¼Æ®.

µÎ ÇüÅ´ °ÅÀÇ ºñ½ÁÇÏÁö¸¸ :ÀÌ ÀÖÀ» ¶§´Â À§ÀÇ °æ¿ìó·³ $parameter°¡ ¼±¾ð¸¸ µÇ°í °ªÀÌ ³ÎÀÏ °æ¿ì¿¡µµ ±âº»°ªÀ¸·Î ¼¼Æ® ½ÃŲ´Ù´Â Â÷ÀÌÁ¡ÀÌ ÀÖ½À´Ï´Ù [1]

echo ${username=`whoami`}
# "username" º¯¼ö¸¦ `whoami`ÀÇ °á°ú·Î ¼¼Æ®.

${parameter+alt_value}, ${parameter:+alt_value}

¸Å°³º¯¼ö°¡ ¼¼Æ®µÇ¾î ÀÖ´Ù¸é alt_value¸¦ ¾²°í ¾Æ´Ï¶ó¸é ³Î ½ºÆ®¸µÀ» ¾¹´Ï´Ù.

ÀÌ µÎ ÇüÅ´ °ÅÀÇ ºñ½ÁÇÏÁö¸¸ parameter°¡ ¼±¾ðµÇ°í ³ÎÀÏ °æ¿ì¿¡ :ÀÌ ÀÖ°í ¾ø°íÀÇ Â÷À̰¡ ³ªÅ¸³³´Ï´Ù. ¾Æ·¡¸¦ º¸¼¼¿ä.

echo "###### \${parameter+alt_value} ########"
echo

a=${param1+xyz}
echo "a = $a"      # a =

param2=
a=${param2+xyz}
echo "a = $a"      # a = xyz

param3=123
a=${param3+xyz}
echo "a = $a"      # a = xyz

echo
echo "###### \${parameter:+alt_value} ########"
echo

a=${param4:+xyz}
echo "a = $a"      # a =

param5=
a=${param5:+xyz}
echo "a = $a"      # a =
# a=${param5+xyz}    ¿Í °á°ú°¡ ´Ù¸£ÁÒ?

param6=123
a=${param6+xyz}
echo "a = $a"      # a = xyz

${parameter?err_msg}, ${parameter:?err_msg}

¸Å°³º¯¼ö°¡ ¼¼Æ®µÇ¾î ÀÖÀ¸¸é ±× °ªÀ» ¾²°í ¾Æ´Ï¶ó¸é err_msg¸¦ Ãâ·Â.

µÎ Çüŵµ ¿ª½Ã ºñ½ÁÇÏÁö¸¸ :Àº parameter°¡ ¼±¾ð¸¸ µÇ°í ³ÎÀÏ °æ¿ì¿¡¸¸ Â÷ÀÌÁ¡ÀÌ ³ªÅ¸³³´Ï´Ù.

¿¹ 9-10. ¸Å°³º¯¼ö ġȯ°ú : ¾²±â

#!/bin/bash

#  ¸î°³ÀÇ ½Ã½ºÅÛ È¯°æ º¯¼ö È®ÀÎ
#  ¿¹¸¦ µé¾î, ÄÜ¼Ö »ç¿ëÀÚÀÇ À̸§À» ³ªÅ¸³»´Â $USER °¡ ¼¼Æ® µÅ ÀÖÁö ¾Ê´Ù¸é,
#+ ½Ã½ºÅÛÀº ¿©·¯ºÐÀ» ÀνÄÇÏÁö ¸øÇÕ´Ï´Ù.

: ${HOSTNAME?} ${USER?} ${HOME?} ${MAIL?}
  echo
  echo "½Ã½ºÅÛ À̸§Àº $HOSTNAME ÀÔ´Ï´Ù."
  echo "¿©·¯ºÐÀÇ À̸§Àº $USER ÀÔ´Ï´Ù."
  echo "¿©·¯ºÐÀÇ È¨µð·ºÅ丮´Â $HOME ÀÔ´Ï´Ù."
  echo "¿©·¯ºÐÀÇ ¸ÞÀÏ INBOX´Â $MAIL ¿¡ ÀÖ½À´Ï´Ù."
  echo
  echo "ÀÌ ¸Þ¼¼Áö¸¦ Àаí ÀÖ´Ù¸é,"
  echo "Áß¿äÇÑ È¯°æ º¯¼ö°¡ ¼¼Æ® µÇ¾î ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù."
  echo
  echo

# ------------------------------------------------------

#  ${variablename?} µµ ½ºÅ©¸³Æ®¿¡¼­ º¯¼ö°¡ ¼¼Æ® µÇ¾î ÀÖ´ÂÁö¸¦ 
#+ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

ThisVariable=Value-of-ThisVariable
#  ¹®ÀÚ¿­ º¯¼ö´Â º¯¼ö À̸§¿¡ ¾µ ¼ö ¾ø´Â ¹®ÀÚ°¡
#+ ¼¼Æ®µÉ ¼öµµ ÀÖÀ¸´Ï ÁÖÀÇÇϼ¼¿ä.
: ${ThisVariable?}
echo "ThisVariable ÀÇ °ªÀº $ThisVariable."
echo
echo


: ${ZZXy23AB?"ZZXy23AB ´Â ¼¼Æ®µÇÁö ¾Ê¾Ò½À´Ï´Ù."}
#  ZZXy23AB ¿¡ °ªÀÌ ¼¼Æ®µÇ¾î ÀÖÁö ¾Ê´Ù¸é,
#+ ¿¡·¯ ¸Þ¼¼Áö¸¦ »Ñ¸®°í Á¾·áÇÒ °ÍÀÔ´Ï´Ù.

# ¿¡·¯ ¸Þ¼¼Áö¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
# : ${ZZXy23AB?"ZZXy23AB ´Â ¼¼Æ®µÇÁö ¾Ê¾Ò½À´Ï´Ù."}


# ´ÙÀ½°ú ¶È°°Àº °á°ú:  dummy_variable=${ZZXy23AB?}
#                      dummy_variable=${ZZXy23AB?"ZXy23AB ´Â ¼¼Æ®µÇÁö ¾Ê¾Ò½À´Ï´Ù."}
#
#                      echo ${ZZXy23AB?} >/dev/null



echo "À§¿¡¼­ ½ºÅ©¸³Æ®°¡ Á¾·áµÆ±â ¶§¹®¿¡ ÀÌ ¸Þ¼¼Áö´Â ¾È º¸ÀÔ´Ï´Ù."

HERE=0
exit $HERE   # ¿©±â¼­ Á¾·áµÇÁö *¾Ê½À´Ï´Ù*.

¸Å°³º¯¼ö ġȯ°ú È®Àå. ´ÙÀ½ ½ÄµéÀº expr ¹®ÀÚ¿­ ¿¬»êÁß match¿¡ ´ëÇØ ºÎÁ·ÇÑ ºÎºÐÀ» º¸¿ÏÇØ ÁÝ´Ï´Ù (¿¹ 12-6 Âü°í). ÁÖ·Î, ÆÄÀÏ °æ·Î¸íÀ» ÆÄ½ÌÇÒ ¶§ ¾²ÀÔ´Ï´Ù.

º¯¼ö ±æÀÌ/¹®ÀÚ¿­Á¶°¢(substring) »èÁ¦

${#var}

¹®ÀÚ¿­ ±æÀÌ ($varÀÇ ¹®ÀÚ °¹¼ö). ¹è¿­ÀÇ °æ¿ì¿¡, ${#array}¶ó°í ÇÏ¸é ¹è¿­ÀÇ Ã¹¹øÂ° ¿ä¼ÒÀÇ ±æÀ̸¦ ¾Ë·ÁÁÝ´Ï´Ù.

Âü°í: ¿¹¿Ü:

  • ${#*} ¿Í ${#@} ´Â À§Ä¡ ¸Å°³º¯¼öÀÇ °¹¼ö¸¦ ¾Ë·ÁÁÝ´Ï´Ù.

  • ¹è¿­¿¡ ´ëÇØ ${#array[*]} ³ª ${#array[@]} ¶ó°í ÇÏ¸é ¹è¿­ ¿ä¼ÒÀÇ °¹¼ö¸¦ ¾Ë·ÁÁÝ´Ï´Ù.

¿¹ 9-11. º¯¼öÀÇ ±æÀÌ

#!/bin/bash
# length.sh

E_NO_ARGS=65

if [ $# -eq 0 ]  # ÀÌ ½ºÅ©¸³Æ®¿¡¼­´Â ¸í·É¾îÁÙ ÀÎÀÚ°¡ ÇÊ¿äÇÕ´Ï´Ù.
then
  echo "Çϳª ÀÌ»óÀÇ ¸í·É¾îÁÙ ÀÎÀÚ°¡ ÇÊ¿äÇÕ´Ï´Ù."
  exit $E_NO_ARGS
fi  

var01=abcdEFGH28ij

echo "var01 = ${var01}"
echo "var01 ÀÇ ±æÀÌ = ${#var01}"

echo "½ºÅ©¸³Æ®·Î ³Ñ¾î¿Â ¸í·É¾îÁÙ ÀÎÀÚ °¹¼ö = ${#@}"
echo "½ºÅ©¸³Æ®·Î ³Ñ¾î¿Â ¸í·É¾îÁÙ ÀÎÀÚ °¹¼ö = ${#*}"

exit 0
${var#pattern}, ${var##pattern}

$patternÀÌ $varÀÇ ¾Õ ºÎºÐ°ú °¡Àå ±æ°Å³ª °¡Àå ª°Ô ÀÏÄ¡ÇÏ´Â ºÎºÐÀ» »èÁ¦.

¿¹ A-6¿¡¼­ ¹ßÃéÇÑ »ç¿ë¹ý ¿¹Á¦:
# "days-between.sh" ¿¹Á¦¿¡¼­ ¾²ÀÎ ÇÔ¼ö.
# ÁÖ¾îÁø ÀÎÀÚÀÇ ¾Õ ºÎºÐ¿¡ µé¾îÀÖ´Â Çϳª ÀÌ»óÀÇ 0 À» »èÁ¦.

strip_leading_zero () # ³¯Â¥³ª ¿ùÀÇ ¾Õ ºÎºÐ¿¡ ³ª¿À´Â 0À» »èÁ¦ÇÏÁö ¾ÊÀ¸¸é 
{                     # Bash °¡ 8Áø¼ö·Î ÇØ¼®Çϱ⠶§¹®¿¡(POSIX.2, sect 2.9.2.1)
  val=${1#0}          # ÀÌ·¸°Ô ÇØ ÁÖ´Â°Ô ÁÁ½À´Ï´Ù.
  return $val
}

´Ù¸¥ »ç¿ë¹ý ¿¹Á¦:
echo `basename $PWD`        # ÇöÀç µð·ºÅ丮ÀÇ basename.
echo "${PWD##*/}"           # ÇöÀç µð·ºÅ丮ÀÇ basename.
echo
echo `basename $0`          # ½ºÅ©¸³Æ® À̸§.
echo $0                     # ½ºÅ©¸³Æ® À̸§.
echo "${0##*/}"             # ½ºÅ©¸³Æ® À̸§.
echo
filename=test.data
echo "${filename##*.}"      # µ¥ÀÌŸ
                            # Àüü ÆÄÀÏÀ̸§¿¡¼­ È®ÀåÀÚ.

${var%pattern}, ${var%%pattern}

$patternÀÌ $varÀÇ µÞ ºÎºÐ°ú °¡Àå ª°Å³ª °¡Àå ±æ°Ô ÀÏÄ¡ÇÏ´Â ºÎºÐÀ» »èÁ¦.

Bash ¹öÀü 2¿¡´Â ¿É¼ÇÀÌ ´õ ´Ã¾ú½À´Ï´Ù.

¿¹ 9-12. ¸Å°³º¯¼ö ġȯ¿¡¼­ÀÇ ÆÐÅÏ ¸ÅĪ

#!/bin/bash
# ¸Å°³º¯¼ö ġȯ ¿¬»êÀÚÀÎ # ## % %% ¸¦ ½á¼­ ÆÐÅÏ ¸ÅĪÇϱâ.

var1=abcd12345abc6789
pattern1=a*c  # * (¿ÍÀϵå Ä«µå)´Â a ¿Í c »çÀÌÀÇ ¸ðµç ¹®ÀÚ¿Í ÀÏÄ¡ÇÕ´Ï´Ù.

echo
echo "var1 = $var1"           # abcd12345abc6789
echo "var1 = ${var1}"         # abcd12345abc6789   (´Ù¸¥ ÇüÅÂ)
echo "${var1} ¿¡ µé¾î ÀÖ´Â ±ÛÀÚ¼ö = ${#var1}"
echo "pattern1 = $pattern1"   # a*c  ('a'¿Í 'c' »çÀÌÀÇ ¸ðµç ¹®ÀÚ)
echo


echo '${var1#$pattern1}  =' "${var1#$pattern1}"    #         d12345abc6789
# ¾Õ¿¡¼­ºÎÅÍ °¡Àå ª°Ô ÀÏÄ¡ÇÏ´Â 3 ±ÛÀÚ¸¦ »èÁ¦             abcd12345abc6789
# ^^^^^^^^^^                                              |-|
echo '${var1##$pattern1} =' "${var1##$pattern1}"   #                  6789      
# ¾Õ¿¡¼­ºÎÅÍ °¡Àå ±æ°Ô ÀÏÄ¡ÇÏ´Â 12 ±ÛÀÚ¸¦ »èÁ¦            abcd12345abc6789
# ^^^^^^^^^^                                              |----------|

echo; echo

pattern2=b*9            # 'b'¿Í '9' »çÀÌÀÇ ¸ðµç ¹®ÀÚ.
echo "var1 = $var1"     # abcd12345abc6789 ¸¦ °è¼Ó ¾¹´Ï´Ù.
echo "pattern2 = $pattern2"
echo

echo '${var1%pattern2}  =' "${var1%$pattern2}"     #     abcd12345a
# µÚ¿¡¼­ºÎÅÍ °¡Àå ª°Ô ÀÏÄ¡ÇÏ´Â 6 ±ÛÀÚ¸¦ »èÁ¦            abcd12345abc6789
# ^^^^^^^^^^                                                       |----|
echo '${var1%%pattern2} =' "${var1%%$pattern2}"    #     a
# µÚ¿¡¼­ºÎÅÍ °¡Àå ±æ°Ô ÀÏÄ¡ÇÏ´Â 12 ±ÛÀÚ¸¦ »èÁ¦           abcd12345abc6789
# ^^^^^^^^^^                                              |-------------|

# ÀÌ·¸°Ô ¿Ü¿ì¼¼¿ä.
#           # °ú ## Àº ¹®ÀÚ¿­ÀÇ ¾ÕÂÊ¿¡¼­ºÎÅÍ µ¿ÀÛÀ» Çϰí,
#           % ¿Í %% ´Â µÚÂÊ¿¡¼­ºÎÅÍ µ¿ÀÛÀ» ÇÕ´Ï´Ù.

echo

exit 0

¿¹ 9-13. ÆÄÀÏ È®ÀåÀÚ ¹Ù²Ù±â:

#!/bin/bash

#                 rfe
#                 ---

# ÆÄÀÏ È®ÀåÀÚ ¹Ù²Ù±â(Renaming file extensions).
#
#         rfe ¿ø·¡È®ÀåÀÚ »õÈ®ÀåÀÚ
#
# ¿¹Á¦:
# ÇöÀç µð·ºÅ丮ÀÇ *.gif ¸¦ *.jpg ·Î ¹Ù²Ù·Á¸é,
#          rfe gif jpg

ARGS=2
E_BADARGS=65

if [ $# -ne $ARGS ]
then
  echo "»ç¿ë¹ý: `basename $0` ¿ø·¡È®ÀåÀÚ »õÈ®ÀåÀÚ"
  exit $E_BADARGS
fi

for filename in *.$1
# ù¹øÂ° ÀÎÀÚ·Î ³¡³ª´Â ÆÄÀÏ ¸ñ·ÏÀ» ÀüºÎ Ž»ö.
do
  mv $filename ${filename%$1}$2
  # ù¹øÂ° ÀÎÀÚ¿Í ÀÏÄ¡ÇÏ´Â ºÎºÐÀ» ¶¼¾î³»°í,
  # µÎ¹øÂ° ÀÎÀÚ¸¦ µ¡ºÙÀÓ.
done

exit 0

º¯¼ö È®Àå/¹®ÀÚ¿­Á¶°¢ ´ëÄ¡

¿©±â¼­ ¼Ò°³ÇÏ´Â °ÍµéÀº ksh¿¡¼­ µû ¿Â °ÍÀÔ´Ï´Ù.

${var:pos}

var º¯¼ö°¡ pos ¿É¼ÂºÎÅÍ ½ÃÀÛÇϵµ·Ï È®Àå.

${var:pos:len}

º¯¼ö var°¡ pos¿¡¼­ ÃÖ´ë len¸¸Å­ÀÇ ±æÀ̸¦ °®µµ·Ï È®Àå. ÀÌ ¿¬»êÀÚÀÇ Ã¢Á¶ÀûÀÎ »ç¿ë ¿¹Á¦¸¦ º¸·Á¸é ¿¹ A-9 Âü°í.

${var/patt/replacement}

var¿¡ ù¹øÂ°·Î ÀÏÄ¡ÇÏ´Â pattÀ» replacement·Î ´ëÄ¡½ÃÅ´.

replacement¸¦ ¾È ÀûÀ¸¸é pattÀÌ Áö¿öÁü.

${var//patt/replacement}

Àü¿ª ´ëÄ¡(Global replacement). var¿¡¼­ ÀÏÄ¡ÇÏ´Â ¸ðµç pattÀ» replacement·Î ´ëÄ¡½ÃÅ´.

À§ÀÇ °æ¿ì¿Í ºñ½ÁÇÏ°Ô replacement¸¦ ¾È Àû¾îÁÖ¸é ¸ðµç pattÀÌ Áö¿öÁü.

¿¹ 9-14. ÀÓÀÇÀÇ ¹®ÀÚ¿­À» ÆÄ½ÌÇϱâ À§ÇØ ÆÐÅÏ ¸ÅĪ »ç¿ëÇϱâ

#!/bin/bash

var1=abcd-1234-defg
echo "var1 = $var1"

t=${var1#*-*}
echo "var1 (ù¹øÂ° - ¸¦ Æ÷ÇÔÇÑ ºÎºÐ±îÁö Àß¶ó³¿) = $t"
#  # ÀÌ °¡Àå ªÀº ¹®ÀÚ¿­°ú ¸ÅÄ¡Çϰí * °¡ ºó ¹®ÀÚ¿­À» Æ÷ÇÔÇÑ ¸ðµç°Í°ú 
#+ ÀÏÄ¡Çϱ⠶§¹®¿¡ t=${var1#*-}  µµ ¶È°°ÀÌ µ¿ÀÛÇÕ´Ï´Ù.
# (S. C. °¡ ÁöÀûÇØ ÁÖ¾ú½À´Ï´Ù.)

t=${var1##*-*}
echo "var1¿¡ \"-\" ÀÌ µé¾îÀÖ´Ù¸é ºó ¹®ÀÚ¿­À» ¸®ÅÏÇÔ...    var1 = $t"


t=${var1%*-*}
echo "var1 (Á¦ÀÏ ¸¶Áö¸·ÀÇ - ºÎÅÍ ³¡±îÁö Àß¶ó³¿) = $t"

echo

# -------------------------------------------
path_name=/home/bozo/ideas/thoughts.for.today
# -------------------------------------------
echo "path_name = $path_name"
t=${path_name##/*/}
echo "Á¢µÎ¾î°¡ Àß·ÁÁø path_name = $t"
# ÀÌ °æ¿ì¿¡¼­´Â    t=`basename $path_name` À̶ó°í ÇØµµ ¶È°°½À´Ï´Ù.
#  t=${path_name%/}; t=${t##*/}   ¶ó°í ÇÏ´Â °ÍÀÌ Á» ´õ ÀϹÝÀûÀÎ ÇØ¹ýÀÌÁö¸¸,
#+ °¡²ûÀº ½ÇÆÐÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
#  $path_name ÀÌ ´º¶óÀÎÀ¸·Î ³¡³¯ °æ¿ì¿¡´Â `basename $path_name` Àº Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê°ÚÁö¸¸,
#+ À§ Ç¥Çö½ÄÀº Á¦´ë·Î µ¿ÀÛÇÒ °ÍÀÔ´Ï´Ù.
# (Thanks, S.C.)

t=${path_name%/*.*}
# t=`dirname $path_name`    ¶ó°í ÇÏ´Â °Í°ú ¶È°°½À´Ï´Ù.
echo "Á¢¹Ì¾î°¡ Àß·ÁÁø path_name = $t"
# ÀÌ·¸°Ô Çϸé "../", "/foo////", # "foo/", "/" °°Àº °æ¿ì¿¡´Â ½ÇÆÐÇÒ °ÍÀÔ´Ï´Ù.
#  basename Àº Á¢¹Ì¾î°¡ ¾ø°í dirname Àº ÀÖÀ» °æ¿ì¿¡ Á¢¹Ì¾î¸¦ »èÁ¦ÇÏ´Â °Í
#+ ¿ª½Ã º¹ÀâÇÑ ¹®Á¦ÀÔ´Ï´Ù.
# (Thanks, S.C.)

echo

t=${path_name:11}
echo "ù¹øÂ° 11°³ ¹®ÀÚ°¡ Àß·Á³ª°£ $path_name = $t"
t=${path_name:11:5}
echo "ù¹øÂ° 11°³ ¹®ÀÚ°¡ Àß·Á³ª°¡°í ±æÀ̰¡ 5ÀÎ $path_name = $t"

echo

t=${path_name/bozo/clown}
echo "\"bozo\" °¡ \"clown\" À¸·Î ´ëÄ¡µÈ $path_name = $t"
t=${path_name/today/}
echo "\"today\" °¡ »èÁ¦µÈ $path_name = $t"
t=${path_name//o/O}
echo "¸ðµç ¼Ò¹®ÀÚ o ¸¦ ´ë¹®ÀÚ·Î ¸¸µç $path_name = $t"
t=${path_name//o/}
echo "¸ðµç ¼Ò¹®ÀÚ o ¸¦ »èÁ¦ÇÑ $path_name = $t"

exit 0
${var/#patt/replacement}

varÀÇ Á¢µÎ¾î(prefix)°¡ patt°ú ÀÏÄ¡Çϸé pattÀ» replacement·Î ġȯ.

${var/%patt/replacement}

varÀÇ Á¢¹Ì¾î(suffix)°¡ patt°ú ÀÏÄ¡Çϸé pattÀ» replacement·Î ġȯ.

¿¹ 9-15. ¹®ÀÚ¿­ÀÇ Á¢µÎ, Á¢¹Ì¾î¿¡¼­ ÀÏÄ¡ÇÏ´Â ÆÐÅÏ Ã£±â

#!/bin/bash
# ¹®ÀÚ¿­ÀÇ Á¢µÎ¾î/Á¢¹Ì¾î ¿¡¼­ ÆÐÅÏ Ä¡È¯ Çϱâ.

v0=abc1234zip1234abc    # ¿ø·¡ º¯¼ö.
echo "v0 = $v0"         # abc1234zip1234abc
echo

# ¹®ÀÚ¿­ÀÇ Á¢µÎ¾î(½ÃÀÛ)¿¡¼­ ÀÏÄ¡.
v1=${v0/#abc/ABCDEF}    # abc1234zip1234abc
                        # |-|
echo "v1 = $v1"         # ABCDE1234zip1234abc
                        # |---|

# ¹®ÀÚ¿­ÀÇ Á¢¹Ì¾î(³¡)¿¡¼­ ÀÏÄ¡.
v2=${v0/%abc/ABCDEF}    # abc1234zip123abc
                        #              |-|
echo "v2 = $v2"         # abc1234zip1234ABCDEF
                        #               |----|

echo

#  ----------------------------------------------------
#  ¹®ÀÚ¿­ÀÇ ½ÃÀÛ°ú ³¡¿¡¼­ ÀÏÄ¡°¡ ÀϾ¾ßÁö¸¸
#+ ´ëÄ¡°¡ ÀϾ´Ï´Ù.
#  ----------------------------------------------------
v3=${v0/#123/000}       # ÀÏÄ¡ÇÏÁö¸¸ ½ÃÀÛ ºÎºÐÀÌ ¾Æ´Õ´Ï´Ù.
echo "v3 = $v3"         # abc1234zip1234abc
                        # *´ëÄ¡°¡ ¾È ÀϾ´Ï´Ù*.
v4=${v0/%123/000}       # ÀÏÄ¡ÇÏÁö¸¸ ³¡ ºÎºÐÀÌ ¾Æ´Õ´Ï´Ù.
echo "v4 = $v4"         # abc1234zip1234abc
                        # *´ëÄ¡°¡ ¾È ÀϾ´Ï´Ù*.

exit 0			
${!varprefix*}, ${!varprefix@}

ÀÌ¹Ì ¼±¾ðµÈ º¯¼öµé Áß¿¡ varprefix·Î ½ÃÀÛÇÏ´Â º¯¼öµé.
xyz23=whatever
xyz24=

a=${!xyz*}      # ¼±¾ðµÈ º¯¼öÁß "xyz"·Î ½ÃÀÛÇÏ´Â º¯¼ö·Î È®Àå.
echo "a = $a"   # a = xyz23 xyz24
a=${!xyz@}      # À§¿Í °°À½.
echo "a = $a"   # a = xyz23 xyz24

# Bash 2.04 ¹öÀü¿¡¼­ ÀÌ ±â´ÉÀÌ Ãß°¡µÊ.

ÁÖ¼®

[1]

ºñ´ëÈ­Çü ½ºÅ©¸³Æ®¿¡¼­ $parameter °¡ ³ÎÀ̸é 127 Á¾·á »óŸ¦ °®°í Á¾·áµË´Ï´Ù("command not found" ¿¡·¯ ÄÚµå).