shell实例(三)

    技术2022-05-19  44

    1.zmore

    #! /bin/shNOARGS=65NOTFOUND=66NOTGZIP=67

    if [ $# -eq 0 ]then echo "Usage: `basename $0` filename" >&2 exit $NOARGSfi

    filename=$1if [ ! -f "$filename" ]then echo "File $filename not found!" >&2 exit $NOTFOUNDfi

    if [ ${filename##*.} != "gz" ]then echo "File $1 is not a gzipped file!" exit $NOTGZIPfi

    zcat $1|moreexit $?

     

    2.求最大公约数

    #! /bin/shARGS=2E_BADARGS=65

    if [ $# -ne "$ARGS" ]then  echo "Uage: `basename $0` first-number second-number"  exit $E_BADARGSfi

    gcd(){  dividend=$1  divisor=$2   remainder=1    until [ "$remainder" -eq 0 ]   do   let "remainder = $dividend % divisor"   dividend=$divisor   divisor=$remainder  done

    }

    gcd $1 $2echo;echo "GCD of $1 and $2 = $dividend";echo

    exit 0

    3.算术操作符

    #! /bin/shn=1; echo -n "$n "let "n = $n + 1"echo -n "$n "

    : $((n = $n + 1))echo -n "$n "

    ((n = n + 1))echo -n "$n "

    n=$(($n + 1))echo -n "$n "

    : $[ n = $n + 1 ]echo -n "$n "

    n=$[ n + 1 ]echo -n "$n "

    let "n++"echo -n "$n "

    ((n++))echo -n "$n "

    : $[ n++ ]echo -n "$n "echoexit 0

     

    4.IFS与空白字符

    #! /bin/shoutput_args_one_per_line(){ for arg do echo "[$arg]" done}

    echo;echo "IFS=/" /""echo "-----------"

    IFS=" "var="a  b c    "output_args_one_per_line $var

    echo;echo "IFS=:"echo "-------------------"

    IFS=:var=":a::b:c:::"output_args_one_per_line $var

    echo exit 0

     

     5.$REPLY

    #! /bin/shecho echo -n "What is your favorite vegetable? "readecho "Your favorite vegetable is $REPLY."

    echo

    echo -n "What is your favorite fruit?"read fruitecho "Your favorite fruit is $fruit."echo "but..."

    echo "Value of /$REPLY is still $REPLY."echoexit 0

     

    $REPLY ----接受最后一个read

     

    6.$SECONDS

    #! /bin/shTIME_LIMIT=10INTERVAL=1

    echoecho "Hit Control-C to exit before $TIME_LIMIT seconds."echo

    while [ "$SECONDS" -le "$TIME_LIMIT" ]do  if [ "$SECONDS" -eq 1 ]  then    units=second  else    units=seconds  fi  echo "This script has been running $SECONDS $units."  sleep $INTERVALdone

    echo -e "/a"

    exit 0


    最新回复(0)