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马哥Linux0217-4中LineCount的小程序补完版
2014马哥Linux0214中关于系统启动加载环境变量的顺序问题