Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > b611ea73723a8287cce23d3124a6eeea > files > 313

howto-sgml-ko-2006-5mdv2010.0.noarch.rpm

#!/bin/bash

# string.bash --- string(3) ¶óÀ̺귯¸®ÀÇ bash ¿¡¹Ä·¹ÀÌ¼Ç ¹öÀü
# ÀúÀÚ: Noah Friedman <friedman@prep.ai.mit.edu>
# ==>     ÀúÀÚÀÇ Çã¶ôÇÏ¿¡ ÀÌ ¹®¼­¿¡ °ÔÀçÇÔ.
# Created: 1992-07-01
# Last modified: 1993-09-29
# Public domain

# Chet Ramey °¡ bash ¹öÀü 2 ¹®¹ýÀ» ¾²µµ·Ï º¯È¯

# Commentary:
# Code:

#:docstring strcat:
# Usage: strcat s1 s2
#
# Strcat Àº s2 ¸¦ s1 À¸·Î µ¡ºÙÀÓ.
#
# ¿¹Á¦:
#    a="foo"
#    b="bar"
#    strcat a b
#    echo $a
#    => foobar
#
#:end docstring:

###;;;autoload   ==> Autoloading of function commented out.
function strcat ()
{
    local s1_val s2_val

    s1_val=${!1}                        # º¯¼ö °£Á¢ÂüÁ¶ È®Àå
    s2_val=${!2}
    eval "$1"=\'"${s1_val}${s2_val}"\'
    # ==> µÎ º¯¼öÁß Çϳª¶óµµ ÀÛÀº µû¿ÈÇ¥°¡ µé¾î ÀÖÀ» °æ¿ì¿¡´Â,
    # ==> eval $1='${s1_val}${s2_val}' À̶ó°í ÇÏ¸é µË´Ï´Ù.
}

#:docstring strncat:
# »ç¿ë¹ý: strncat s1 s2 $n
# 
# strcat °ú ºñ½ÁÇÏÁö¸¸ s2 ¿¡¼­ ÃÖ´ë n ¹®ÀÚ¸¸Å­¸¸ µ¡ºÙÀÔ´Ï´Ù. s2 °¡ n º¸´Ù
# ª´Ù¸é ±×³É s2 ¸¸ º¹»çÇÕ´Ï´Ù. Echoes result on stdout.
#
# ¿¹Á¦:
#    a=foo
#    b=barbaz
#    strncat a b 3
#    echo $a
#    => foobar
#
#:end docstring:

###;;;autoload
function strncat ()
{
    local s1="$1"
    local s2="$2"
    local -i n="$3"
    local s1_val s2_val

    s1_val=${!s1}                       # ==> º¯¼ö °£Á¢ ÂüÁ¶ È®Àå
    s2_val=${!s2}

    if [ ${#s2_val} -gt ${n} ]; then
       s2_val=${s2_val:0:$n}            # ==> ¹®ÀÚ¿­Á¶°¢(substring) ÃßÃâ
    fi

    eval "$s1"=\'"${s1_val}${s2_val}"\'
    # ==> µÎ º¯¼öÁß Çϳª¶óµµ ÀÛÀº µû¿ÈÇ¥°¡ µé¾î ÀÖÀ» °æ¿ì¿¡´Â,
    # ==> eval $1='${s1_val}${s2_val}' À̶ó°í ÇÏ¸é µË´Ï´Ù.
}

#:docstring strcmp:
# »ç¿ë¹ý: strcmp $s1 $s2
#
# Strcmp ´Â µÎ ÀÎÀÚ¸¦ »çÀü»óÀÇ ¼ø¼­´ë·Î ºñ±³Çؼ­ s1 ÀÌ s2 º¸´Ù ÀÛÀ¸¸é À½¼ö,
# °°À¸¸é 0, Å©¸é ¾ç¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù.
#:end docstring:

###;;;autoload
function strcmp ()
{
    [ "$1" = "$2" ] && return 0

    [ "${1}" '<' "${2}" ] > /dev/null && return -1

    return 1
}

#:docstring strncmp:
# »ç¿ë¹ý: strncmp $s1 $s2 $n
# 
# strcmp ¿Í ºñ½ÁÇϳª ÃÖ´ë n ¹®ÀÚ¸¸Å­¸¸ ºñ±³ÇÕ´Ï´Ù( n ÀÌ 0 ÀÌÇϸé 0 À» ¸®ÅÏ).
#:end docstring:

###;;;autoload
function strncmp ()
{
    if [ -z "${3}" -o "${3}" -le "0" ]; then
       return 0
    fi
   
    if [ ${3} -ge ${#1} -a ${3} -ge ${#2} ]; then
       strcmp "$1" "$2"
       return $?
    else
       s1=${1:0:$3}
       s2=${2:0:$3}
       strcmp $s1 $s2
       return $?
    fi
}

#:docstring strlen:
# »ç¿ë¹ý: strlen s
#
# Strlen Àº s ÀÇ ±æÀ̸¦ ¸®ÅÏÇÕ´Ï´Ù.
#:end docstring:

###;;;autoload
function strlen ()
{
    eval echo "\${#${1}}"
    # ==> ÀÎÀÚ·Î ³Ñ¾î¿Â º¯¼ö°ªÀÇ ±æÀ̸¦ ¸®ÅÏ
}

#:docstring strspn:
# »ç¿ë¹ý: strspn $s1 $s2
# 
# Strspn Àº s2 Àüü¸¦ Æ÷ÇÔÇÏ´Â s1 ÀÇ ÃÖ´ë Ãʱ⠼¼±×¸ÕÆ® ±æÀ̸¦ ¸®ÅÏÇÕ´Ï´Ù.
#:end docstring:

###;;;autoload
function strspn ()
{
    # IFS ¸¦ ¾ð¼ÂÇØ ³õÀ¸¸é °ø¹é¹®ÀÚµµ ÀÏ¹Ý ¹®ÀÚó·³ ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
    local IFS=
    local result="${1%%[!${2}]*}"
 
    echo ${#result}
}

#:docstring strcspn:
# »ç¿ë¹ý: strcspn $s1 $s2
#
# Strcspn Àº s2 Àüü°¡ Æ÷ÇÔµÇÁö ¾Ê´Â s1 ÀÇ ÃÖ´ë Ãʱ⠼¼±×¸ÕÆ® ±æÀ̸¦ ¸®ÅÏÇÕ´Ï´Ù.
#:end docstring:

###;;;autoload
function strcspn ()
{
    # IFS ¸¦ ¾ð¼ÂÇØ ³õÀ¸¸é °ø¹é¹®ÀÚµµ ÀÏ¹Ý ¹®ÀÚó·³ ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
    local IFS=
    local result="${1%%[${2}]*}"
 
    echo ${#result}
}

#:docstring strstr:
# »ç¿ë¹ý: strstr s1 s2
# 
# Strstr Àº s1 ¿¡¼­ s2 °¡ óÀ½ ¹ß°ßµÇ´Â ¹®ÀÚ¿­Á¶°¢(substring)À» ¿¡ÄÚÇØ ÁÖ°í,
# s1 ¿¡¼­ s2 °¡ ¹ß°ßµÇÁö ¾Ê´Â´Ù¸é ±×³É ¹«½ÃÇÕ´Ï´Ù. 
# ¸¸¾à¿¡ s2 °¡ ±æÀÌ°¡ 0 ÀÎ ¹®ÀÚ¿­À» °¡¸£Å²´Ù¸é s1 À» ¸®ÅÏÇÕ´Ï´Ù.
#:end docstring:

###;;;autoload
function strstr ()
{
    # s2 °¡ °¡¸£Å°´Â ¹®ÀÚ¿­ÀÇ ±æÀÌ°¡ 0 À̶ó¸é s1 À» ¿¡ÄÚ
    [ ${#2} -eq 0 ] && { echo "$1" ; return 0; }

    # s1 ¿¡¼­ s2 °¡ ¹ß°ßµÇÁö ¾ÊÀ¸¸é ±×³É ¸®ÅÏ
    case "$1" in
    *$2*) ;;
    *) return 1;;
    esac

    # ÀÏÄ¡ÇÏ´Â ºÎºÐºÎÅÍ ³¡±îÁö¸¦ ¶¼¾î ³»±â À§ÇØ ÆÐÅÏ ¸ÅĪ »ç¿ë
    first=${1/$2*/}

    # ±× ´ÙÀ½¿¡´Â ÀÏÄ¡ÇÏÁö ù¹ø° ºÎºÐÀ» ¶¼¾î³¿
    echo "${1##$first}"
}

#:docstring strtok:
# »ç¿ë¹ý: strtok s1 s2
#
# Strtok Àº s1 ÀÌ ±¸ºÐÀÚÀÎ s2 ¿¡ µé¾î ÀÖ´Â Çϳª ÀÌ»óÀÇ ¹®ÀÚ¿­¿¡ ÀÇÇØ 
# 0 °³ ÀÌ»óÀ¸·Î ÀÌ·ç¾îÁ® ÀÖ´Ù°í °¡Á¤ÇÕ´Ï´Ù. 
# strtok ÀÌ Ã³À½ ºÒ¸®¸é(ºñ¾î ÀÖÁö ¾ÊÀº s1 À» ÁöÁ¤Çؼ­) ù¹ø° ÅäÅ«À» Æ÷ÇÔÇÑ
# ¹®ÀÚ¿­À» Ç¥ÁØÃâ·ÂÀ¸·Î ¿¡ÄÚÇØ ÁÝ´Ï´Ù. ÀÌ ÇÔ¼ö´Â ù¹ø° ÀÎÀÚ°¡ ºó ¹®ÀÚ¿­·Î 
# °è¼Ó È£ÃâµÇµµ·Ï Çؼ­ ¹Ù·Î ´ÙÀ½¿¡ µû¶ó³ª¿À´Â ÅäÅ«À» ó¸®Çϵµ·Ï Çϱâ À§Çؼ­
# È£Ãâ½Ã¸¶´Ù s1 ¿¡¼­ÀÇ ÀÚ½ÅÀÇ À§Ä¡¸¦ °è¼Ó ÃßÀûÇÕ´Ï´Ù.
# ÀÌ·± ½ÄÀ¸·Î Çؼ­ ±× ´ÙÀ½ È£ÃâÀº ´õ ÀÌ»óÀÇ ÅäÅ«ÀÌ ¾øÀ» ¶§±îÁö s1 À» ó¸®ÇÕ´Ï´Ù.
# ±¸ºÐ ¹®ÀÚ¿­ÀÎ s2 ´Â È£Ãâ½Ã¸¶´Ù ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù. s1 ¿¡ ó¸®ÇÒ ÅäÅ«ÀÌ 
# ³²¾Æ ÀÖÁö ¾Ê´Ù¸é, ºó °ªÀÌ Ç¥ÁØÃâ·ÂÀ¸·Î ¿¡Äڵ˴ϴÙ.

###;;;autoload
function strtok ()
{
 :
}

#:docstring strtrunc:
# »ç¿ë¹ý: strtrunc $n $s1 {$s2} {$...}
# strncmp ó·³ ¿©·¯ ÇÔ¼ö¿¡¼­ ¾²À̴µ¥, ºñ±³¸¦ À§Çؼ­ ÀÎÀÚ¸¦ À߶ó³À´Ï´Ù. 
# °¢°¢ÀÇ s1, s2 ... ¿¡¼­ óÀ½ n °³ÀÇ ¹®ÀÚ¸¦ Ç¥ÁØÃâ·ÂÀ¸·Î ¿¡ÄÚÇØ ÁÝ´Ï´Ù.
#:end docstring:

###;;;autoload
function strtrunc ()
{
    n=$1 ; shift
    for z; do
        echo "${z:0:$n}"
    done
}

# provide string

# string.bash ´Â ¿©±â±îÁö


# ========================================================================== #
# ==> ¿©±âºÎÅÍ´Â º» ¹®¼­ÀÇ ÀúÀÚ°¡ Ãß°¡ÇÑ ºÎºÐÀÔ´Ï´Ù.

# ==> ÀÌ ½ºÅ©¸³Æ®¸¦ ¿©·¯ºÐ ½ºÅ©¸³Æ®¿¡¼­ ¾²·Á¸é ¿©±âºÎÅÍ ³¡±îÁö Áö¿î´ÙÀ½ 
# ==> ¿©·¯ºÐ ½ºÅ©¸³Æ®¿¡¼­ ÀÌ ½ºÅ©¸³Æ®¸¦ "source" ÇϸéµË´Ï´Ù.

# strcat
string0=one
string1=two
echo
echo "\"strcat\" ÇÔ¼ö Å×½ºÆ®:"
echo "¿ø·¡ÀÇ \"string0\" = $string0"
echo "\"string1\" = $string1"
strcat string0 string1
echo "»õ \"string0\" = $string0"
echo

# strlen
echo
echo "\"strlen\" ÇÔ¼ö Å×½ºÆ®:"
str=123456789
echo "\"str\" = $str"
echo -n "\"str\" ÀÇ ±æÀÌ = "
strlen str
echo



# µ¶ÀÚµéÀ» À§ÇÑ ¿¬½À¹®Á¦:
# ¿©±â¼­ ¼Ò°³ÇÑ ¹®ÀÚ¿­ ÇÔ¼ö¸¦ ¸ðµÎ Å×½ºÆ®ÇÏ´Â Äڵ带 ÀÛ¼ºÇØ º¸¼¼¿ä.


exit 0