?? string.bash
字號:
# string.bash --- bash emulation of string(3) library routines# Author: Noah Friedman <friedman@prep.ai.mit.edu># Created: 1992-07-01# Last modified: 1993-09-29# Public domain# Conversion to bash v2 syntax done by Chet Ramey# Commentary:# Code:#:docstring strcat:# Usage: strcat s1 s2## Strcat appends the value of variable s2 to variable s1. ## Example:# a="foo"# b="bar"# strcat a b# echo $a# => foobar##:end docstring:###;;;autoloadfunction strcat (){ local s1_val s2_val s1_val=${!1} # indirect variable expansion s2_val=${!2} eval "$1"=\'"${s1_val}${s2_val}"\'}#:docstring strncat:# Usage: strncat s1 s2 $n# # Line strcat, but strncat appends a maximum of n characters from the value# of variable s2. It copies fewer if the value of variabl s2 is shorter# than n characters. Echoes result on stdout.## Example:# a=foo# b=barbaz# strncat a b 3# echo $a# => foobar##:end docstring:###;;;autoloadfunction strncat (){ local s1="$1" local s2="$2" local -i n="$3" local s1_val s2_val s1_val=${!s1} # indirect variable expansion s2_val=${!s2} if [ ${#s2_val} -gt ${n} ]; then s2_val=${s2_val:0:$n} # substring extraction fi eval "$s1"=\'"${s1_val}${s2_val}"\'}#:docstring strcmp:# Usage: strcmp $s1 $s2## Strcmp compares its arguments and returns an integer less than, equal to,# or greater than zero, depending on whether string s1 is lexicographically# less than, equal to, or greater than string s2.#:end docstring:###;;;autoloadfunction strcmp (){ [ "$1" = "$2" ] && return 0 [ "${1}" '<' "${2}" ] > /dev/null && return -1 return 1}#:docstring strncmp:# Usage: strncmp $s1 $s2 $n# # Like strcmp, but makes the comparison by examining a maximum of n# characters (n less than or equal to zero yields equality).#:end docstring:###;;;autoloadfunction strncmp (){ if [ -z "${3}" ] || [ "${3}" -le "0" ]; then return 0 fi if [ ${3} -ge ${#1} ] && [ ${3} -ge ${#2} ]; then strcmp "$1" "$2" return $? else s1=${1:0:$3} s2=${2:0:$3} strcmp $s1 $s2 return $? fi}#:docstring strlen:# Usage: strlen s## Strlen returns the number of characters in string literal s.#:end docstring:###;;;autoloadfunction strlen (){ eval echo "\${#${1}}"}#:docstring strspn:# Usage: strspn $s1 $s2# # Strspn returns the length of the maximum initial segment of string s1,# which consists entirely of characters from string s2.#:end docstring:###;;;autoloadfunction strspn (){ # Unsetting IFS allows whitespace to be handled as normal chars. local IFS= local result="${1%%[!${2}]*}" echo ${#result}}#:docstring strcspn:# Usage: strcspn $s1 $s2## Strcspn returns the length of the maximum initial segment of string s1,# which consists entirely of characters not from string s2.#:end docstring:###;;;autoloadfunction strcspn (){ # Unsetting IFS allows whitspace to be handled as normal chars. local IFS= local result="${1%%[${2}]*}" echo ${#result}}#:docstring strstr:# Usage: strstr s1 s2# # Strstr echoes a substring starting at the first occurrence of string s2 in# string s1, or nothing if s2 does not occur in the string. If s2 points to# a string of zero length, strstr echoes s1.#:end docstring:###;;;autoloadfunction strstr (){ # if s2 points to a string of zero length, strstr echoes s1 [ ${#2} -eq 0 ] && { echo "$1" ; return 0; } # strstr echoes nothing if s2 does not occur in s1 case "$1" in *$2*) ;; *) return 1;; esac # use the pattern matching code to strip off the match and everything # following it first=${1/$2*/} # then strip off the first unmatched portion of the string echo "${1##$first}"}#:docstring strtok:# Usage: strtok s1 s2## Strtok considers the string s1 to consist of a sequence of zero or more# text tokens separated by spans of one or more characters from the# separator string s2. The first call (with a non-empty string s1# specified) echoes a string consisting of the first token on stdout. The# function keeps track of its position in the string s1 between separate# calls, so that subsequent calls made with the first argument an empty# string will work through the string immediately following that token. In# this way subsequent calls will work through the string s1 until no tokens# remain. The separator string s2 may be different from call to call.# When no token remains in s1, an empty value is echoed on stdout.#:end docstring:###;;;autoloadfunction strtok (){ :}#:docstring strtrunc:# Usage: strtrunc $n $s1 {$s2} {$...}## Used by many functions like strncmp to truncate arguments for comparison.# Echoes the first n characters of each string s1 s2 ... on stdout. #:end docstring:###;;;autoloadfunction strtrunc (){ n=$1 ; shift for z; do echo "${z:0:$n}" done}provide string# string.bash ends here
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -