linux下shell之脚本编写基础,Linux基础之shell脚本编程(一)

本文主要是shell脚本编程练习

1、写一个脚本

(1)、获取并列出当前系统上的所有磁盘设备;

(2)、显示每个磁盘设备上每个分区相关的空间使用信息;

1 #!/bin/bash

2 #author:BaoZhang

3 #

4 echo " all disk and partitions are: "

5 for i in $(fdisk -l | grep -o "^/dev/sd.*" | cut -d" " -f1);

6 do

7         echo "$i"

8         df -h $i

9         echo -e "\n"

10 done

2、写一个脚本

(1) 接受一个以上文件路径作为参数;

(2) 显示每个文件拥有的行数;

(3) 总结说明本次共为几个文件统计了其行数;

1 #!/bin/bash

2 #author : BaoZhang

3 #

4 if [ $# -ne 1 ];then

5   echo "usage : file_count /path/to/somedir/"

6   exit 1

7 fi

8 cd $1 &>/dev/null

9 if [ $? -ne 0 ];then

10   echo "usage: file_count /path/to/somedir/"

11   exit 2

12 else

13   file_number=$(ls -l $1 | wc -l)

14   for i in $(ls $1);

15   do

16     echo "line number of $i is: $(cat $i |  wc -l)"

17   done

18 fi

19 echo "all the file in $1 are : $file_number"

20

3、写一个脚本

(1) 传递两个以上字符串当作用户名;

(2) 创建这些用户;且密码同用户名;

(3) 总结说明共创建了几个用户;

1 #!/bin/bash

2 #author:BaoZhang

3 #

4 new_user=0

5 exist_user=0

6 if [ $UID -ne 0 ];then

7   echo "only root can add user"

8   exit 1

9 else

10   if [ $# -lt 2 ];then

11     echo "usage : user_add.sh username1 username2....,arguments must more then 2 username"

12     exit 2

13   else

14     for i in $*;

15     do

16       id $i &>/dev/null

17       if [ $? -eq 0 ];then

18         echo "$i exist"

19         exist_user=$[$exist_user+1]

20         echo $i | passwd --stdin $i &>/dev/null

21         echo "user $i changed the password"

22       else

23         useradd $i

24         new_user=$[$new_user+1]

25         echo $i | passwd --stdin $i &>/dev/null

26         echo "user $i add"

27       fi

28     done

29   fi

30 fi

31 echo "in the total , $new_user created, $exist_user change the password"

4、写一个脚本,新建20个用户,visitor1-visitor20;计算他们的ID之和;

1 #!/bin/bash

2 #author:BaoZhang

3 #

4 if [ $UID -ne 0 ];then

5   echo "only root can add user"

6   exit 1

7 else

8   for i in {1..20};

9   do

10     id visitor$i &>/dev/null

11     if [ $? -eq 0 ];then

12       echo "visitor$i exist "

13     else

14       useradd visitor$i

15       echo "visitor$i add finished"

16     fi

17     #let sum+=$[$(cat /etc/passwd | awk -F: '{if ($1=="visitor$i") print $3}')]

18     let sum+=$[$(id -u visitor$i)]

19   done

20 fi

5、写一脚本,分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数;

1 #!/bin/bash

2 #author:BaoZhang

3 #

4 file1=/etc/rc.d/rc.sysinit

5 file2=/etc/rc.d/init.d/functions

6 file3=/etc/fstab

7 for i in {$file1,$file2,$file3};

8 do

9   count1+=$[$(grep "^#" $i | wc -l)]

10   count2+=$[$(grep "^[[:space:]]$" $i  | wc -l)]

11 done

12 echo " start with #  total line is: $count1 "

13 echo " total  blank line is : $count2 "

6、写一个脚本,显示当前系统上所有默认shell为bash的用户的用户名、UID以及此类所有用户的UID之和;

1 #!/bin/bash

2 #author:BaoZhang

3 #

4 echo "all users are :"

5 grep  "/bin/bash$" /etc/passwd | cut -d: -f1,3

6 for i in $( grep  "/bin/bash$" /etc/passwd | cut -d: -f1,3 | cut -d: -f2);

7 do

8   let sum+=$[$i]

9 done

10 echo "the sum of  UID is: $sum"

7、写一个脚本,显示当前系统上所有,拥有附加组的用户的用户名;并说明共有多少个此类用户;

1 #!/bin/bash

2 #author:BaoZhang

3 #

4 echo "all users are:"

5 grep "," /etc/group | cut -d: -f1

6 echo "total user count  are : $(grep "," /etc/group | cut -d":" -f1 | wc -l  )"

原创文章,作者:zhangbao,如若转载,请注明出处:http://www.178linux.com/57832

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值