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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2014马哥Linux0218-1字符测试与生成交互式选项表的脚本代码相关的知识,希望对你有一定的参考价值。

0218课里,先是一个简单的小程序,注意字符测试的使用,建议所有被测试的字符都要加引号,而在字符测试匹配模式(也可以使正则表达式)的时候,需要用双中括号,题目如下:

练习:判定所有用户是否拥有可登陆shell

#!/bin/bash

for userName in `cut -d: -f1 /etc/passwd`;do

if [[ `grep "^$userName\>" /etc/passwd | cut -d: -f7` =~ sh$ ]]; then

echo "login user: $userName"

else

echo "nologin user: $userName"

fi

done

上题中,比较诡异的是,判定的前半部分可以用grep命令引用,还不需要加双引号,神奇!



练习:写一个脚本

1、让用户交互式输入一个用户名,先判定用户是否存在,不存在,则以7为退出码;

2、判断用户的shell是否为/bin/bash,如果是,则显示为"Bash User",退出码为0;

  否则,则显示为"Not Bash User.",退出码为1。

read -p "please input usename :" username

if ! grep "^$username/>" /etc/passwd &> /dev/null;then

   exit 7

elif

   [[ `grep ^$username/> /etc/passwd |cut -d:-f7` =~ /bin/shell ]];then

    echo "bash user"

    exit 0

  else 

   echo "not bash user"

   exit 1

以上这题,取自学友笔记



练习:1、显示如下菜单:

cpu)show cpu info

mem)show memory info

quit)quit

Enter your option:

      2、如果用户选择cpu,则显示文件/proc/cpuinfo的信息

      3、如果用户选择men,则显示文件/proc/meminfo的信息

      4、如果用户选择quit,则退出,且退出码为5;

      5、如果用户键入其他字符,则显示未知选项,请重新执行脚本,退出码为6。


以下解答是默认用户输入小写选项的简单版本:

#!/bin/bash

cat <<EOF

        cpu:show cpu info

        mem:show memory info

        quit:quit

EOF

read -p "Enter your option:" userOption

if [ "$userOption" == "cpu" ] &> /dev/null;then

        cat /proc/cpuinfo

elif [ "$userOption" == "mem" ] &> /dev/null;then

        cat /proc/meminfo

elif [ "$userOption" == "quit" ] &> /dev/null;then

        exit 5

else

        echo "Bad input, try again." && bash cpuinfo.sh

fi


以下解答是接受用户大小写命令的版本:

#!/bin/bash

cat <<EOF

        cpu:show cpu info

        mem:show memory info

        quit:quit

EOF

read -p "Enter your option:" userOption

if [[ "$userOption" =~ [Cc][Pp][Uu] ]] &> /dev/null;then

        cat /proc/cpuinfo && bash cpuinfo2.sh

elif [[ "$userOption" =~ [Mm][Ee][Mm] ]] &> /dev/null;then

        cat /proc/meminfo && bash cpuinfo2.sh

elif [[ "$userOption" == [Qq][Uu][Ii][Tt] ]] &> /dev/null;then

        exit 5

else

        echo "Bad input, please try again." && bash cpuinfo2.sh

fi

最后一题是自己写的,两个版本,自己运行时没有出错,希望朋友们可以debug。

完成了这些后,就遇到了传说中的VIM了!首先是要学会怎么退出VIM,哈哈哈哈!

以上是关于2014马哥Linux0218-1字符测试与生成交互式选项表的脚本代码的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

2014马哥Linux0218-4中script.sh的题目

马哥linux作业第六周

马哥linux作业第五周'