shell脚本编程基础

Shell脚本编程

shell脚本编程:是基于过程式、解释执行的语言
格式: (1)#!/bin/bash 机制
(2) 添加执行权限
(3) bash 运行
脚本调试与安全:

./ 执行脚本
bash 执行脚本
bash -n 查看是否语法错误
bash -x 脚本试执行
set -u 存在没有定义的变量提示错误信息
set paste 保留格式
变量控制符: 
           ''  单引号,防止所有扩展
           \   斜杠,转义字符本身
           ""  双引号,允许变量扩展
           ``  反引号,允许所有扩展
普通变量:   
          赋值: name=...
          引用: $name
          删除: unset name
          查看: set
          $RANDOM随机数生成
环境变量: 
          赋值: declare -x name=... 
          引用: $name
          删除: unset name
          查看: declare -x
退出状态码变量:
          echo $?  返回0即上一条命令成功,否则失败
函数: 
          赋值: name{} (  “命令”   ) 
          引用: name
          删除: unset name
          查看: declare -f
          函数存与文件中,函数需先生效再执行,source  file
数组:
          多个变量的集合,分为普通数组和关联数组
          赋值: name=(1 3 5 7)  默认下标从0开始
          引用: ${name[*]}  *所有元素  0下标为0的元素  
          删除: unset name     
          删除单元素: unset name[0]
          查看: declare -a 
                echo ${name[*]} 查看name数组所有元素
                echo ${#name[*]} 查看name数组所有元素个数 
算数运算:
          +加  —减   *乘   %取余  
          let f=$y%2
          let y++即 y=y+1   y+=u即 y=y+u    
逻辑运算:
          与&|  非!  
          短路与 1 && 2  即1成功执行2,失败则不执行
          短路或 1 || 2  即1失败执行2,成功则不执行
条件判断:
          [  ]  条件判断 
          [[ == ]] 通配符模式
          [[ =~ ]] 正则表达式
字符串判断:
          =等于  !=不等于   >大于   <小于
          -v 变量是否被赋值
          -z 为空 
          -n 不为空
数值测试: 
          -gt大于    -lt小于
          -eq等于    -ne不等于
文件测试:
          -a存在       -b块设备文件  -c字符设备文件
          -s套接字文件  -f普通文件    -d目录文件
          -h链接文件    -p管道文件
          -r可读  -w可写  -x可执行
组合条件测试:
          -a并且   -o或者    !取反 
if条件判断
         if 1条件;then       满足1条件执行1命令   
             “1命令”   
         elif  2条件; then   满足2条件执行2命令
             “2命令”
         else                都不满足执行3命令
             “3命令”   
         fi      

case条件判断  配合read -p 提示输入使用
         read -p “数字” shu
         case $shu in
         1)
                 “命令”   ;;
         2)       
                 “命令”   ;;
         *)   
                 “命令”   ;;
         case
for循环
         格式1:for y in {1..9}; do 
               done         
         格式2:for ((i=1;i<10;i++));do
               done
while循环
         while “条件” ;do   条件为真循环
         done
         无限循环:true永远返回真   
         特殊用法:while read line ;do 依次读取文件行进行处理
                 done </etc/passwd
                 while read c d ;do 为两个变量赋值需要两个参数
                 done
                 while read -p “请输入数字” y ;do 提示输入,单参数循环
                 done
循环控制:
         sleep 1 停留1秒 m分 h小时 
         continue 提前结束本轮循环
         break 结束整个循环
         shift 依次循环处理   
字符串处理:
         n=weroidasfnzxc
         ${#n} 返回字符串长度
         ${n:2:5} 跳过字符串前2个取后面3个
     
         f="var/log/messages"
         ${f#*/}: log/messages 去除第一个/之前的内容
         ${f##*/}: messages 去除所有/之前的内容
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值