2014马哥Linux0218-4中shift轮替和最后一道大题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2014马哥Linux0218-4中shift轮替和最后一道大题相关的知识,希望对你有一定的参考价值。

写一个脚本,使得无论脚本后跟多少参数,都能计算出参数的和:

#!/bin/bash

  sum=0

  for i in `seq 1 $#`;do

    let sum+=$1

    shift

  done

   echo $sum


写一个脚本:使用形式如下

userinfo.sh -u username [-v{1|2}]

-u选项用于指定用户,而后脚本显示用户的UID和GID;

如果同时使用了-v选项:

-v后面的值如果是1,则额外显示用户的家目录路径

-v后面的值如果是2,则额外显示用户的家目录路径和shell


#!/bin/bash

#

[ $# -lt 2 ] && echo "Too less arguments, quit." && exit 3

#上面一句是当参数不足2个的时候,强制退出

if [[ "$1" == "-u" ]];then

  userName="$2"

  shift 2

fi

#上段功能是确认参数-u后,将之后的参数写入变量userName,再将前两个参数轮替出去

if [ $# -ge 2 ] && [ "$1" == "-v" ];then

  verFlag=$2

fi

#上段功能是当轮替后参数等于2,并且第一个参数等于-v时,将第二个参数写入verFlag变量

verFlag=${verFlag:-0}

#默认变量verFlag为0

if [ -n $verFlag ];then #如果变量verFlag不为空

  if ! [[ $verFlag =~ [012] ]];then #如果变量verFlag不属于012中任何一个

    echo "Wrong parameter."

    echo "Usage:`basename $0` -u Username -v {1|2}"

    exit 4

  fi  

fi


# echo $userName $verFlag 这句是用来测试的


if [ $verFlag -eq 1 ];then

  grep "^$userName" /etc/passwd | cut -d: -f1,3,4,6

elif [ $verFlag -eq 2 ];then

  grep "^$userName" /etc/passwd | cut -d: -f1,3,4,6,7

else

  grep "^$userName" /etc/passwd | cut -d: -f1,3,4

fi


最后这题是属于有些难度的了,感觉属于马哥即兴发挥,毕竟没有画出流程图。

以上是关于2014马哥Linux0218-4中shift轮替和最后一道大题的主要内容,如果未能解决你的问题,请参考以下文章

2014马哥Linux0218-4前半部文件测试的题目

2014马哥Linux0217-4中LineCount的小程序补完版

2014马哥Linux0214中关于系统启动加载环境变量的顺序问题

2014马哥Linux0218-1字符测试与生成交互式选项表的脚本代码

Linux_rsylogd日志轮替

Linux实操篇—— 日志管理