shell 脚本编程

字符测试方法

双目测试: 

 比较俩个字符串(==  等于,等值比较          !=   不等)

单目测试:   

-n  $stringVar:字符串是否为空          -z  $stringVar:字符串是否为空,空则为真,不空为假。

-a:用于逻辑与的操作          -e:检查文件是否存在

-f:检查文件是否为普通文件

-d:检查文件是否是目录文件

-r:检查文件是否可读

-w:检查文件是否为写

-x:检查文件是否为可执行

例题:

   1.写一个脚本 (1)让用户交互式输入一个用户名,先判定用户是否存在;不存在,则以7为退出码;(2)、判断用户的shell是否为/bin/bash; 如果是,则显示为“Bash User.”,退出码为0; 否则,则显示为“Not Bash User.”,退出码为1;

#!/bin/bash
read -p "请输入用户名" username
id $username
num=$?  
if [ $num -eq 0 ];then
shell=`cat /etc/passwd | grep ^$username | awk -F ":" '{print $7}'`
if [[ $shell == "/bin/bash" ]]
   echo  "bash"
   exit 0
 else
   echo "no"
   exit 1
 fi
else
echo "bu ok"
exit 7
fi
 

2.判断用户的shell是否为/bin/bash; 如果是,则显示为“Bash User.”,退出码为0; 否则,则显示为“Not Bash User.”,退出码为1;

#!/bin/bash
# 提取当前用户的用户名
USERNAME=$(whoami)
# 从/etc/passwd文件中获取用户的shell
USER_SHELL=$(grep "^$USERNAME:" /etc/passwd | awk -F: '{print $NF}')
# 判断用户的shell是否为/bin/bash
if [ "$USER_SHELL" == "/bin/bash" ]; then
    echo "Bash User."
    exit 0
else
    echo "Not Bash User."
    exit 1
fi
你可以将上述脚本保存为一个文件(例如check_shell.sh),然后给它执行权限并运行它:
chmod +x check_shell.sh
./check_shell.sh

如果脚本输出“Bash User.”并且退出码为0,那么你的默认shell就是/bin/bash。如果输出“Not Bash User.”并且退出码为1,那么你的默认shell就不是/bin/bash。

3.案例 1.显示如下菜单: cpu) show cpu info; mem) sowmemory info; quit) quit Enter your option: 2.如果用户选择cpu,则显示文件/proc/cpuinfo的信息; 3.如果用户选择mem,则显示文件/proc/meminfo的信息; 4.如果用户选择quit,则退出,且状态码为5; 5.如果用户输入其他字符,则显示未知选项,请重新执行脚本,退出状态码为6

位置参数替换

案例:

写一个脚本,使用形式如下:脚本名称 u username[v{1|2}]      -u选项用于指定用户名;脚本显示用户名的uid,gud。如果同时使用-v选项: v后面的值是1,显示用户的家目录 v后面的值是2,显示用户的家目录和shell类型。

for循环入门

脚本执行流程:

   顺序执行:默认规则,逐条执行语句

   选择执行:条件判断,符合条件给予执行

   循环执行:将同一段代码反复执行。   例:  for         while  

  fou循环格式

for  Var_name  in  列表;
do
    循环体
done
  生成列表的方式:

   方法一:

直接给出列表。             例子:    for  num   in   1  2  8   89  

方法二:

  使用文件名通配的机制生成列表。

方法三:

   可以使用{}或者seq命令生成

    例:

方法四:

    使用命令生成

 for循环实践

1案例:删除10个用户,user120....130,并且删除其家目录。

2.案例:用file命令,显示 /var/log目录下每个文件类型

#!/bin/bash

# 使用通配符和循环遍历/var/log目录下的所有文件
for file in /var/log/*; do
# 检查是否是一个文件
if [ -f "$file" ]; then
# 对每个文件执行file命令
file "$file"
fi
done

bash四则运算

    方法一:使用方括号                  方法二:使用双圆括号

四则运算:       +  -  *  /   %

3-1案例:计算100以内所有正整数之和

3-2案例:分别计算100以内偶数之和和奇数之和

方法一:

方法二:

while循环介绍

while的语法结构:

     while      条件测试    do       循环体    done       (while循环:条件成立,则循环;失败,则退出)

注意: while循环必须有退出条件 否则成为死循环

4.1案例:计算100以内的和

4.2案例:求100以内偶数的和

#!/bin/bash
num=0
sum=0
while [ $num -lt 101 ];
do
   sum=$[$num+$sum]
    echo $sum
    num=$[$num+2]
done

4.3案例:监控tom是否登录系统,如果登录系统,向另一个终端发信息

while ture
do
    str=`who | grep -o ^"zbs"`
    if [[ $str == "zbs" ]];then
          echo "123" >>/dev/pts/3
     fi
    echo "not login"
    sleep  5
done

while处理文件

while  read  line(line是变量名)   

do

        循环体

 done</etc/passwd              

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值