2017814作业

来源:互联网 发布:淘宝卖家淘宝客推广 编辑:程序博客网 时间:2024/06/05 17:37
#! /bin/bash
 if [ $# -lt 1 ];then
 echo "send"
 exit 1
 fi


 if grep "^$1\>"  /etc/passwd &> /dev/null;then
 echo "user $1 exits"
 else
 useradd $1
 echo $1 |passwd --stdin $1 &> /dev/null
 echo "user $1"
fi


#!/bin/bash
3.#通过参数传递一个用户给脚本,此用户存在,则删除用户以及家目录和邮件目录
if [ $# -lt 1 ];then
 echo "send  agruments"
  exit 1
 fi
 if id -u $1 &> /dev/null ;then
 userdel -r $1
 echo "user $1 is deleted"
 else
 echo "user $1 does not exists"
 fi



4.通过命令参数给一个用户,判定其用户id是奇数还是偶数
1 if [ $# -lt 1 ];then
  2 echo "put into number "
  3 exit 1
  4 fi
  5 if id -u $1 &> /dev/null ;then #查找id并判断 再将数据丢进null中
  6   idN=$(id -u $1)              #得到id值
  7   let s=$idN%2                 #得到取余之后的值
  8   if  [ $s==0 ];then           #判断取余之后的值是否为0  
  9   echo "$1 is 偶数$idN"           
 10   else
 11   echo "$1 is 奇数$idN"
 12   fi
 13  else                      # 特别注意这一项 如果不是 就会输出 此用户不存在
 14  echo "$1 is not exits"
 15  fi



5.通过命令行参数给定两个文件名,如果文件不存在,如果都存在时返回两个文件的行数之和
  1 #!/bin/bash
  2 if [ $# -lt 2 ];then
  3 echo "please input two"
  4 exit 1
  5 fi
  6 if  [ $1 -a $2  ];then
  7 add=$(grep ".*" $1|wc -l)
  8 bdd=$(grep ".*" $2|wc -l)   # ".* "是匹配任意单个字符
  9  cdd=$add+$bdd              #了解let什么情况使用
 10 echo "sum is $cdd"
 11 else
 12 echo "wenijan is not exit"
 13 fi
 14
6.通过脚本参数传递一个文本路径给脚本,判断此文件的类型
 1 #!/bin/bash
  2 if [ $# -lt 1 ];then
  3 echo "input a arguement"
  4 exit 1
  5 fi
  6 if ! [ -e $1 ];then
  7 echo "no such directory or file "
  8 exit 1
  9 fi
 10
 11 if [ -f  $1 ];then
 12 echo "commen file"
 13 elif [ -b $1 ];then
 14 echo "block file"
 15 elif [ -S $1 ];then
 16 echo "socket file"
 17 elif [ -d $1 ];then
 18 echo "directory"
 19 else
 20 echo "unkonw"
 21 fi
(第六题 使用到了 if多分支语句格式)
格式如下:
if [条件1];then
 条件为真执行这里的代码
elif [条件2];then
条件为真执行这里的代码
elif [条件2];then



else
如果条件都不满足时 执行这里的代码
fi
注意:多个分支只会执行一个,执行首先为真的分支
7.(1)传递一个参数给脚本,此参数为用户名(2)根据其ID号来判断用户类型:0;管理员,1-499系统用户:500+为登入用户,输出用户是哪种类型的用户1 #!/bin/bash
  2 if  [ $# -lt 1 ];then
  3 echo "input a arguement"
  4 exit 1
  5 fi
  6 if id -u $1  &> /dev/null;then
  7 user=$(id -u $1)
  8
  9 if [ $user -eq 0 ];then
 10  echo " user is root "
 11  elif [ $user -gt 1 -a $user -lt 499 ];then
 12  echo " user is system user"lse
 13  elif  [ $user -gt 500 ];then
 14  echo "user is login user"
 15  fi
 16 else
 17 echo "no such user "
 18 fi
 19
注意: 无论做什么题目都要细心 特别一些平常做过的一些题目 特别循环 一定要了解其框架 才能将其完整的书写出来
——————————————————————————————————————————

    1 #计算当前用户的id 之和
  2 #!/bin/bash
  3 declare -i count=0
  4 add=$( wc -l /etc/passwd |cut -d" " -f1 )
  5 for i in $( seq 1 $add );do
  6 username=$( cut -d: -f1 /etc/passwd|sed -n "$i"p )
  7 zonghe=$[ $count + $(id -u $username ) ]
  8 done
  9 echo "$zonghe"
 

———————————————————————————————————————————————
 (以下两题都是用while和until 循环来计算100以内分得奇数 和偶数的总和 )
  1   #!/bin/bash
  2 declare -i jishu=0
  3 declare -i oushu=0
  4 declare -i i=1          #做之前要对 一些数值要声明
  5  while [ $i -le 100 ];do
  6  yushu=$[ $i%2 ]
  7 if [ $yushu -eq  0  ];then
  8 oushu=$[ $i + $oushu ]
  9 else
 10 jishu=$[ $jishu + $i ]
 11 fi
 12 let i++                #此项不知到忘记多少次 牢记
 13 done
 14 echo "jishu is $jishu"     
 15 echo "oushu is $oushu "          # echo的两项   一定要记住放在什么位置
—————————————
     #!/bin/bash
  2 declare -i jishu=0
  3 declare -i oushu=0
  4 declare -i i=1
  5 until [ $i -gt 100 ];do   #注意此题判断的条件 until和while 判断方式不一样
  6 yushu=$[ $i%2 ]
  7 if [ $yushu -eq 0 ];then
  8 oushu=$[ $oushu + $i ]
  9 else
 10 jishu=$[ $jishu + $i ]
 11 fi
 12 let i++
 13 done
 14 echo "oushu is $oushu"
 15 echo "jishu is $jishu"
———————————————————————————————————————————————
1 #创建9个用户 密码同用户名 如果用户存在的话就删除 用户分别为user101--user109
  2 #!/bin /bash
  3 # 使用for循环
  4 for i in `seq 1 9`;do
  5 if id  user10"$i" &> /dev/null;then  #注意此项的 id
  6 userdel -r user10"$i"       # 还有 不光只有这一项 $i 要有“ ”
  7 else
  8 useradd user10"$i"
  9 echo "user10$i "|passwd --stdin user10"$i" # 直接设置秘密
 10 echo " create user is user10$i"
 11 fi
 12 done
-------------------------------------------------------------------------------------
1 #!/bin/bash
  2 # 9x9乘法表
  3 for ((i=1;i<10;i++));do
  4 for ((j=1;j<=$i;j++));do
  5 echo -n " $j X $i=$[ $j*$i  ] "
  6 done
  7 echo
  8 done
 #!/bin/bash
  2 #9x9乘法表的逆序排法
  3 declare -i i=9
  4 while [ $i -ge 1  ];do
  5 for j in `seq 1 $i |sort -n -r`;do     #很具有函数的思想 同时也利用到了 一些
    基础知识  关键还是要掌握函数的思想  只有掌握函数的思想才能融会贯通
  6 echo -n " $i x $j=$[ $i*$j ] "
  7 done
  8 echo
  9 let i--
 10 done
~    
------------------------------------------------------------------------------------     

1 #!/bin/bash
  2 # 使用continue和for循环 来计算100以内的偶数和
  3 declare -i oushuhe=0
  4 for i in {1..100};do
  5 yushu=$[ $i%2 ]           #细心
  6 if [ $yushu -eq 1  ];then
  7 continue
  8 fi
  9 oushu=$[$oushu + $i ]
 10 done
 11 echo " oushu is $oushu"
---------------------------------------------------------------------------------
1 #!/bin/bash
  2 #利用while和continue 来计算100以内的偶数和
  3 declare -i i=0
  4 declare -i oushu=0
  5 while [ $i -lt 100 ];do
  6 let i++
  7 if [ $[ $i%2 ] -eq 1 ];then
  8 continue
  9 fi
 10 oushu=$[ $oushu + $i ]
 11 done
 12 echo "oushu is $oushu "
-------------------------------------------------------------------
              1 #!/bin/bash
  2 #  求100以内的奇数和 利用 continue 语句
  3 declare -i jishu=0
  4 declare -i i=1
  5 while [ $i -lt 100 ];do
  6 let i++
  7 if [ $[$i%2] -eq 0  ];then
  8 continue
  9 fi
 10 jishu=$[ $jishu + $i ]
 11 done
 12 echo "jishu is $jishu"
-----------------------------------------------------------------------
原创粉丝点击