Shell编程基础知识



Shell 编程基础

概念

Shell 是一个程序,同时也是一种程序设计语言。从程序的角度看,Shell 是命令解析器,常用的 Shell 命令解析器有 sh、ash 和 bash 等,我们的系统默认使用 bash。从程序设计语言的角度看,它设计了程序语言所需的相关结构,如变量、条件语句、分支语句、循环语句和函数等。

Shell 的调用

系统调用
  • 开机调用: /etc/profile
  • 用户登录调用: ~/.bashrc
自定义的手动调用
  • #! : 说明执行该 Shell 脚本的解释器
  • # : 注释

执行方式

  • 方式1: ./shell脚本名
    使用 #! 中指明的解析器,如果没有指明则使用默认的解析器,并会开启子Shell。

  • 方式2: 命令解析器名 shell脚本名
    使用指定的解析器,不考虑代码中 #! 说明的 shell,会开启子Shell。

  • 方式3: . shell脚本名
    不会开启子Shell,使用当前的 shell。

注意事项
  • Shell 文件需具备执行权限。可使用命令:chmod +x shell脚本名
  • 不要在 Windows 中编写 Shell 脚本再在 Linux 系统中使用,因为 Windows 对 / 的解释与 Linux 中不同。

变量

分类

  1. 系统提供的变量
  2. 自定义变量
  3. 预定义变量

变量的定义与初始化

  • 定义: 变量名=值
  • 修改值: 变量名=新值
  • 取值: $变量名

只读变量

  • 定义: readonly 变量名=值

转换为数字

  • 定义: declare -i 变量名

撤销变量

  • 撤销: unset 变量名

导出变量

  • 导出: export 变量名
    注意:导出到父 shell。

查看系统变量命令

env

预定义变量

  • $#: 参数个数
  • $*: 所有参数
  • $1, $2, ...: 第一个、第二个参数
  • $?: 上一个命令的返回状态
  • $0: 脚本名称
  • $$: 当前Shell的进程ID

脚本变量的特殊用法

  • "": 会解析变量

    num=10
    echo "$num"  # 结果是 10
    
  • '': 不会解析变量

    num=10
    echo '$num' $num  # 输出 '$num' 10
    
  • `: 会解析命令

    echo `date`  # 打印当前时间
    
  • ( 代码 ): 会在子Shell中执行
    注意:代码之间需有空格,子Shell可访问父Shell的变量,父Shell不能访问子Shell中的变量。

    num=10
    (
      num=1
      echo $num  # 输出 1
    )
    echo $num  # 输出 10
    
  • { 代码 }: 在当前 shell 中执行
    注意:代码之间需有空格。

测试

语法

  1. test 条件
  2. [ 条件 ]

测试文件

  • -e: 是否存在
  • -d: 是否为目录
  • -f: 是否为文件
  • -r: 是否可读
  • -w: 是否可写
  • -x: 是否可执行
  • -L: 是否是链接
  • -c: 是否为字符设备
  • -b: 是否为块设备
  • -s: 是否非空

测试字符串

  • =: 判断字符串内容是否相同
  • !=: 判断字符串是否不相同
  • -z: 判断字符串是否为空串
  • -n: 判断字符串是否为非空

比较大小

  • -eq: 相等
  • -ne: 不相等
  • -gt: 大于
  • -ge: 大于等于
  • -lt: 小于
  • -le: 小于等于

复合条件

  • &&: 与
  • ||: 或
  • -a: 与
  • -o: 或
  • !: 非

条件语句

if 语句

if [ 条件 ]; then
  执行语句
elif [ 条件 ]; then
  执行语句
...
else
  执行语句
fi

case 语句

case $变量名 in
  "值")
    执行语句
    ;;
  "值")
    执行语句
    ;;
  *)
    执行语句
    ;;
esac

循环语句

for 语句

  • 语法1:
for (( 初始化变量; 条件; 改变变量 ))
do
  执行语句
done
  • 语法2:
for 变量名 in 遍历的内容
do
  执行语句
done

while 语句

while [ 条件 ]
do
  执行语句
done

until 语句

until [ 条件 ]
do
  执行语句
done

函数

定义函数

  • 语法1:
函数名(){
  执行语句
}
  • 语法2:
function 函数名(){
  执行语句
}

调用函数

函数名 参数1 参数2 ...

关键字

  • return: 结束函数
  • return xxx: 结束函数并返回 xxx
  • break: 跳出当前循环
  • exit 1: 退出当前程序

以上就是 Shell 编程的基本知识。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值