Linux之Shell编程基础(六)

课程内容

第一个Shell脚本

#!/bin/bash
#注释
echo "Hello"
  • 第一行#!指定解释器,只在第一行才有效
  • 注释:"#"

变量

a=123
a=hello
a=`pwd`
PATH=${PATH}:path  # 变量后接字符串,可以直接拼接字符串
# 【注意】":a"有特殊含义,会指到当前路径

  • 不需要定义变量类型[弱类型语言]
  • 如a = 123可以是字符串,也可以是整数

特殊变量

位置变量

在这里插入图片描述

  • 结果:

在这里插入图片描述
在这里插入图片描述

状态变量
  • $?:【上一条】指令执行结果,0——成功,非0——不成功
    在这里插入图片描述

  • 便于脚本自动判断指令成功与否

  • 、$!:当前进程/上一指令的PID,一般用于自动化测试、多脚本交互场景

  • 输入:read
    在这里插入图片描述
    在这里插入图片描述

  • -p:显示友好提示,需在bash下使用
  • -s:静默模式
  • -t:输入等待时长,超时结束(单位:s)
  • 输出:echo
  • -e:开启转义
  • 输出:printf
  • 和C语言的printf非常像!
    这里是引用
  • [PS]: !和\n放一起有特殊含义,需要分开
  • bash下需要分开
  • zsh下可以分开,或用\转义
  • 一般对于特殊符号,需要警觉!
函数

在这里插入图片描述

  • 没有形参
  • 调用:函数名 参数…
    在这里插入图片描述
流程控制

do — done 、if — then — fi、case — esac

分支结构

  • if
    在这里插入图片描述
  • if用两个中括号[[ ]]的写法,更高级,与TEST表达式兼容性更好
  • case
    在这里插入图片描述
  • 分号;;不能没有!, 相当于break,加了break也要有
  • 默认情况可用*)
  • case用的较少,一般用来做菜单,比if更好

循环结构


  • for
    在这里插入图片描述
  • 利用seq生成序列
    在这里插入图片描述
  • 利用ls的匹配规则
    在这里插入图片描述
  • while

在这里插入图片描述

  • 同样适用test表达式
  • 可以初始化变量,否则第一次echo num时,num是空值,表现为空行
    当遇到后面的+1时,系统判定它为整数类型,就当作整数用。
  • until

在这里插入图片描述

  • 与while唯一的区别在于:until写的是停止条件,while写的是循环条件
数组

在这里插入图片描述

  • 数组赋值和使用
    在这里插入图片描述
  • [常用的数组操作]输出数组元素下标
    在这里插入图片描述

echo ${num[*]}输出数组所有元素
echo ${!num[*]}输出数组下标
num=(1, 2 3 a 3 b)输出初始化
在这里插入图片描述
+=追加元素
unset删除数组,或元素[通过下标删除]

随堂练习

1~100的偶数和

在这里插入图片描述

  • $[ ]可用来做整数运算
  • seq效率稍低
暴力求素数

在这里插入图片描述

  • 函数的return值
  • 通过$?获得,在调用函数后echo $?即可,但是return值有范围限制0~255
  • 通过命令替换符``取到
  • 注意对循环变量i的冲突问题:定义局部变量
  • 调试程序
  • 习惯:适当的echo输出
  • 全局调试: bash -x *.sh
  • 局部调试:set -x [代码块] set +x
素数筛

在这里插入图片描述

  • 方式一方便操作素数,且输出时可减少判断
  • 方式二还可以操作合数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值