极品太子妃txt微盘:shell函数

来源:百度文库 编辑:中财网 时间:2024/04/29 16:04:16

1.在脚本中定义函数

 函数有两部分组成:函数名,函数体

 

2.建立和执行函数

function findit ()
{
    if [ $# -lt 1 ]; then
        echo "Uage : findit file";
        return 1;
    fi;
    for loop in "$@";
    do
        find /usr/local/yjg $loop -print;
    done
}
[root@localhost yjg]# findit
Uage : findit file
[root@localhost yjg]# findit fun1.txt
/usr/local/yjg
/usr/local/yjg/fun1.txt
/usr/local/yjg/fun2.txt
fun1.txt
[root@localhost yjg]#

 

3.函数举例

#!/bin/sh
#fun2.txt
function char_name(){
 _LETTERS_ONLY=$1
 _LETTERS_ONLY=` echo $1|awk '{if($0~/[^a-zA-Z]/) print "1"}'`
if [ "$_LETTERS_ONLY" != "" ]; then
  return 1
else
  return 0
fi
}

function name_error(){
 echo " $@ contains errors,it must contain only letters"
}

while :
do
  echo -n "what is your first name:"
  read F_NAME
  if char_name $F_NAME; then
    break
  else
    name_error $F_NAME
  fi
done

while :
do
  echo -n "what is your surname:"
  read S_NAME
  if char_name $S_NAME; then
    break
  else
    name_error $S_NAME
  fi
done
~
~
~
~
"fun2.sh" 38L, 563C written
[root@localhost yjg]# ./fun2.sh
what is your first name:123
123
 123 contains errors,it must contain only letters
what is your first name:abc
abc
what is your surname:321
321
 321 contains errors,it must contain only letters
what is your surname:cde
cde
[root@localhost yjg]#

 

选择单个字符

read_a_char ()
{
    SAVEDSTTY=`stty -g`;
    stty cbreak;
    dd if=/dev/tty bs=1 count=1 2> /dev/null;
    stty cbreak;
    stty=$SAVESTTY
}

 

判断是否是文件夹

[root@localhost yjg]# is_a_directory(){
> if [ $# -lt 1 ]; then
>    echo "is_it_a_directory: I need an argument"
>    return 1
> fi
> _DIRECTORY_NAME=$1
> if [ ! -d $_DIRECTORY_NAME ]; then
>    return 1
> else
>    return 0
> fi
> }

 

提示回答

#!/bin/sh
#continue_prompt.fun
echo "Enter into fun"
function prompt(){
#to call: continue_prompt "string to display" default answer
STR=$1
echo $STR

DEFAULT=$2
echo $DEFAULT

if [ $# -lt 1 ]; then
  echo "continue prompt: I need a string to display"
  return 1
fi

while :
do
  echo -n " $_STR [Y..N] [$_DEFAULT]:"
  read ANS
  case $ANS in
   Y) return 0
     ;;
   N) return 1
     ;;
  esac

case $ANS in
    y|Y|Yes|YES)
     return 0
    ;;
    n|N|No|NO)
      return 1
    ;;
    *) echo "Answer either Y or N,default is $_DEFAULT "
    ;;
   esac
  echo $ANS
done
}

 

 从登录ID中,抽取信息

#!/bin/sh
#whois.fun
function whois(){
  if [ $# -lt 1 ]; then
    echo "whois : need user id's please"
    return 1
  fi

for loop
do
  USER_NAME=` grep $loop /etc/passwd | awk -F: '{print $4}' `
  if [ "$USER_NAME" = "" ]; then
    echo "whois: Sorry cannot find $loop"
  else
    echo "$loop is $USER_NAME"
  fi

done
}
whois dave yjg superman

 

 

 列出文件行号

#!/bin/sh
#number_file.fun
function filen(){
FILENAME=$1

if [ $# -ne 1 ]; then
  echo "number_file: I need a filename to number:"
  return 1
fi

loop=1
while read LINE
do
  echo "$loop: $LINE"
  loop=` expr $loop + 1 `
done < $FILENAME
}
 
filen $1

 

小写转大写

#!/bin/sh
#str_to_upper.fun
function str_to_upper(){
  STR=$1
  if [ $# -ne 1 ]; then
    echo "number_file: I need a string to convert please"
    return 1
  fi

  echo $@ | tr '[a-z]' '[A-Z]'
}

str_to_upper $1

 

字符串长度

#!/bin/sh
#check_length.fun
function check_len(){
 STR=$1
 MAX=$2
 if [ $# -ne 2 ]; then
   echo "check_length: I need a string and max length the string should be"
   return 1
 fi

 LENGTH=` echo $STR | awk '{print length($0)}' `
 if [ "$LENGTH" -gt "$MAX" ]; then
   return 1
 else
   return 0
 fi
}

check_len $1 $2