首页 > 系统相关 >Linux-shell自动化编程

Linux-shell自动化编程

时间:2024-06-01 20:59:35浏览次数:25  
标签:cnt shell ############## 编程 echo num awk user Linux

1.常用命令解释器 Shell命令解释器:bash编程.

 编程环境准备

 2.shell脚本执行方式

 3.变量

变量名字命名要求:
  1. 1. 不能以数字开头。
  2. 2. 不能以特殊符号开头,可以以"_"开头。
  3. 3. 推荐字母开头
变量的命名方式:
  1. 1. 驼峰方式: personOfName personOfAge
  2. 2. ✔ 现代式: 单词(小写)+ "_下划线"连接 person_of_name
  3. 3. 。。。。。
  4. 4. 不要写,不能直接表示含义的变量. a1=lidao a2=oldboy a3=996

 环境变量文件加载顺序

 位置变量

 变量字串

 切片

 变量扩展-设置默认值

 特殊变量小结

 变量赋值语句

 read参数

 4.运算符

 运算方法

 5.条件表达式

 条件表达式符号

判断文件是否存在格式
[ -f /etc/hosts ] ՎҐ echo "成立 " Վҗ echo "失败"

 对比字符串

 比大小

 逻辑判断

小结

 案例:

检查 是否输入了用户名。 这个用户是否存在,如果不存在则退出,提示用户不存在。 是否可以登录 用户uid,gid 用户家目录 属于这个用户的文件。 最近1次登录情况。 
#1.input##
13 ##########
14 read -p "请输入用户名" user
15
16 ##############
17 #2.检查用户ՎՎ˂
18 ##############
19 #变量不能为空
20 [ "${user}x" = "x" ] ՎҐ {
21  echo 请输入用户名
22  exit 2
23 }
24
25 #是否存在
26 id $user &>/dev/null
27 if [ $? -ne 0 ];then
28   echo "用户 $user 不存在"
29   exit 1
30 fi
31 #if id $user &>/dev/null   ;then
32 #   echo "用户 $user 不存在"
33 #   exit 1
34 #fi
35 ##############
36 #3.用户信息ՎՎ˂
37 #登录#########
38 ##############
39 user_shell=`awk -F: -vname=$user   '$1Վҧname{print
$NF}' /etc/passwd`
40 if [ "$user_shell" = "/bin/bash" ];then
41    if_login="可以登录"
42 else
43    if_login="无法登录"
44 fi
45
46 ##############
47 #3.用户信息ՎՎ˂
48 #uid,gid######
49 #家目录#######
50 ##############
51 user_ids=`awk -F: -vname=$user   '$1Վҧname{print
$3,$4}' /etc/passwd`
52 user_homedir=`awk -F: -vname=$user  
'$1Վҧname{print $6}' /etc/passwd`
53
54 ##############
55 #3.用户信息ՎՎ˂
56 #文件   ######
57 ##############
58 #find / -type f -user oldboy 2>/dev/null
59
60 ##############
61 #3.用户信息ՎՎ˂
62 #登录   ######
63 ##############
64 user_login_info=`lastlog |awk -vname=$user 
'$1Վҧname'`
65
66
67 ##############
68 #4.输出#######
69 ##############
70 cat ՎӒEOF
71   用户名: $user
72   是否可以登录: $if_login
73   用户UID,GID: $user_ids
74   用户家目录: $user_homedir
75   最近的登录情况: $user_login_info
76   用户的文件: `find / -type f -user $user 
2>/dev/null`
77 EOF

 6.case语句

case语句格式
case "变量"  in
    1)   
     命令1
     ;;
    666)
     命令2
     ;;
    8080)
     命令3
     ;;
     *)
     错误提示
esac
case语句功能,可以通过if+elif+else形式进行替换。

7.函数

#定义方式01 最完整
function lidao_show() {
命令
命令
内容
 return n  #函数的返回值
}

 

 函数传参

 8.

端口: nc 进程: ps,top 网络: ping web: curl/wget 检查指定url是否可以访问:wget/curl

9.循环

1 while 条件
2 do
3     命令
4 done
11 #1. vars 0-99之间
12 guess_num=$((RANDOM%100))
13 i=1
14 #2. 检查是否为数字
15 check_num() {
16 [[ "$num" =~ ^[0-9]+$ ]] Վҗ {
17     echo "请输入数字,不要输入其他$num"
18     continue
19 }
20 }
21
22 #3. 排名功能
23 ranking() {
24  cnt=$((i-1))
25  if [ $cnt -le 3 ];then
26     echo "恭喜你,使用了$cnt次,超越了99.99%的人"
27  elif [ $cnt -ge 4 -a $cnt -le 6 ];then
28     echo "恭喜你,使用了$cnt次,超越了80%的人"
29  else
30     echo "恭喜你,使用了$cnt次,超越了70%的人"
31  fi
32 }
33
34 #4. 用户输入数字,判断
35 input_num_compare() {
36   read -p "请输入数字" num
37   check_num
38   let iՎҡ
39    if [ $num -gt $guess_num ];then
40       echo "很抱歉,猜大了"
41    elif [ $num -lt $guess_num ];then
42       echo "很抱歉,猜小了"
43    else
44       echo "恭喜你猜对了"
45       ranking
46       exit
47    fi
}
#5 书写主函数
main() {
while true
do
   input_num_compare
done
}
main

failed_cnt=0
#2. 检查是否为数字
# 用户输入非数字
# 1. 检查是否为数字
# 2. 失败次数是否大于等于3
check_num() {
 [[ "$num" =~ ^[0-9]+$ ]] Վҗ {
     let failed_cntՎҡ
     if [ $failed_cnt -lt 3 ];then
         echo "请输入数字,不要输入其他$num"
         continue
     else
         echo "失败次数过多,游戏结束"
         exit 1
     fi
 }
}

 10.数组赋值

 11.debug流程

 案例:awk循环

awk 'BEGIN{for(i=1;iՎӋ100;iՎҡ) {sum=sum+i} print sum 
}'
awk 'BEGIN{
   for(i=1;i<=100;iՎҡ )
      {sum=sum+i}
   print sum  
   }'

awk数组与shell数组区别

  • awk数组:关联数组,下标啥都行。
  • shell数组:普通数组,下标数字,shell中也有关联数组.。

 12.awk和shell语法对比

 

标签:cnt,shell,##############,编程,echo,num,awk,user,Linux
From: https://www.cnblogs.com/anni-qianqian/p/18215122

相关文章

  • Linux线程之读写锁小结
    读写锁(rwlock)与互斥锁(MutexLock)相比,有如下特点:更加细致的区分了读和写,给共享资源分别上了“读”锁和“写”锁。“写”独占,“读”共享,“写”锁优先级更高如果共享资源在绝大多数情况下是“读”操作,可以提高程序的并发性能。常用的函数原型总结如下:pthread_rwlock_trwlock......
  • PowerShell 来操作 Windows 防火墙,实现网络访问控制和防火墙规则的设置。下面是一些常
    PowerShell来操作Windows防火墙,实现网络访问控制和防火墙规则的设置。下面是一些常见的PowerShell命令,用于创建阻止特定类型文件传输协议的规则和限制电子邮件附件的规则:阻止FTP传输协议:powershellCopyCodeNew-NetFirewallRule-DisplayName"BlockFTP"-DirectionOu......
  • Linux上安装jdk
    1).上传安装包使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux上传完毕后,我们执行指令cd/切换到上传目录下,查看上传的安装包。2).解压安装包执行如下指令,将上传上来的压缩包进行解压,并通过-C参数指定解压文件存放目录为/usr/local。(注意版本和压缩包后缀)......
  • 【Linux】 深入讲解自动化构建工具
    各位大佬好,这里是阿川的博客,祝您变得更强个人主页:在线OJ的阿川大佬的支持和鼓励,将是我成长路上最大的动力阿川水平有限,如有错误,欢迎大佬指正Linux一系列的文章(质量分均在93分以上)Linux–发展、环境、指令上半场Linux–指令下半场Linux–权限Linux–生态与......
  • Xshell安装(免费可用)和使用教程
    Xshell使用方式Xshell是一款功能强大的终端模拟器,用于远程访问和管理服务器。它支持多种协议,如SSH1/SSH2、Telnet、Rlogin、Serial等。本文将介绍Xshell的基本使用方法。1.安装与启动首先,从官网下载Xshell安装包,然后按照提示进行安装。安装完成后,启动Xshell。2.创建......
  • 【Linux基础】tomcat安装
    【Linux基础】tomcat安装文章目录【Linux基础】tomcat安装1、Linux安装软件方式2、安装jdk3、安装tomcat4、防火墙操作5、tomcat停止1、Linux安装软件方式在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下:安装方式特点二进制发布包安装软件已经......
  • 【LInux内核中IO多路复用 背景+原理+直白总结+优缺点】EPoll篇 及大总结
    Linux内核中的epoll多路复用原理是基于事件驱动的一种高效I/O处理机制,它主要用于监视多个文件描述符(filedescriptors,简称fd)的状态并进行事件驱动的I/O操作。epoll相比传统的select和poll机制,在处理大量并发连接时具有更高的效率和更低的资源消耗。以下是epoll多路复用原理......
  • WebAssembly作为PLC(可编程逻辑控制器)引擎技术的10大优势
    WebAssembly(简称Wasm)是一种用于在现代Web浏览器中安全执行低级代码的二进制指令格式。它被设计为一种与语言无关的目标格式,这意味着可以用任何编程语言编写代码,然后编译成Wasm。将WebAssembly作为PLC(可编程逻辑控制器)IEC61131-3编程语言的的中间格式,可以带来一系列显著的优点,以下......
  • [转帖]在Linux上查看活跃线程数与连接数
     https://www.cnblogs.com/xibuhaohao/p/11413669.html 原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明。简介现如今,有两种常见的软件资源几乎成了Java后端程序的标配,即线程池与连接池,但这些池化资源非常的重要,一旦不够用了,就会导致程序阻塞、性能......
  • WebAssembly作为PLC(可编程逻辑控制器)引擎技术的10大优势
    WebAssembly(简称Wasm)是一种用于在现代Web浏览器中安全执行低级代码的二进制指令格式。它被设计为一种与语言无关的目标格式,这意味着可以用任何编程语言编写代码,然后编译成Wasm。将WebAssembly作为PLC(可编程逻辑控制器)的中间格式,可以带来一系列显著的优点,以下是一些主要的亮点:性......