shell脚本编程之变量

本文详细介绍了Bash Shell脚本中的变量使用,包括变量赋值、命令结果赋值、变量类型(本地、环境、位置、特殊变量)、变量撤销与查看,以及整型变量定义和算术运算的方法。内容涵盖了单引号与双引号的区别,以及如何通过`let`、`$[]`、`$(( ))`和`expr`进行算术运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概述

shell编程:

  • shell语言是脚本语言,解释型语言。
  • shell语言 是通过bash下进行解释运行的

静态语言 编译型语言 需要将代码通过编译器编译成二进制文件
属于强类型(变量) 代表 c c++ java c#
动态语言 解释型语言 不要编译,在环境中,边解释边执行
属于弱类型(变量) 代表 python asp .net php perl shell

2.变量

在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储,即使你将整数和小数赋值给变量,它们也会被视为字符串。

变量赋值

VAR_NAME=VALUE

VAR_NAME 是变量名,VALUE 是赋给变量的值。赋值号的周围不能有空格
如果 value 不包含任何空白符(例如空格、Tab缩进等),那么可以不使用引号;
如果 value 包含了空白符,那么就必须使用引号包围起来。使用单引号和使用双引号也是有区别的

’ ’ 单引号 表示强引用 ''内的变量和命令原样输出
" " 双引号 表示弱引用 ""内的变量和命令先解析后在输出

将命令的结果赋值给变量
VAR_NAME=`COMMAND`
VAR_NAME=$(COMMAND)
使用变量

$VAR_NAME
${VAR_NAME} 为了帮助解释器识别变量的边界

NAME=para
echo "Hello, my friend zhou${NAEM}"
bash变量的类型
  • 本地变量(局部变量)
  • 环境变量
  • 位置变量
  • 特殊变量

1.本地变量

VARNAME=VALUE
作用域:整个脚本进程

local VARNAME=VALUE
使用local关键词 局部变量 作用域:为当前代码段(函数)
详解见https://www.cnblogs.com/JiangLe/p/4846818.html

2.​环境变量

export VARNAME=VALUE
作用域为当前shell进程及其子进程

注:脚本在执行时会启动一个子shell进程:

  • 命令行中启动脚本,会继承当前shell的环境变量
  • 系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量

3.位置变量

$1,$2,…
表示 通过命令行传入的参数值

4.特殊变量

  • $? 保存上一命令执行状态返回值
    程序执行: 两类返回值
    程序的执行结果(在标准输出输出的内容)
    程序状态返回码(0-255) 0-正确执行 1-255 错误执行
  • $0 当前脚本的文件名
  • $# 传递给脚本的参数个数
  • ∗ / */ /@ 传递给脚本的所有参数
    但是当它们被双引号(" “)包含时,
    “$*” 会将所有的参数作为一个整体,以”$1 $2 … n " 的 形 式 输 出 所 有 参 数 ; " n"的形式输出所有参数; " n""@" 会将各个参数分开,以"$1" “ 2 " … " 2" … " 2""n” 的形式输出所有参数。
  • $$ 当前shell进程ID
撤销变量

unset VARNAME

查看当前shell变量

set(环境变量+本地变量)
env,printenv,export(当前shell的环境变量)

将变量的添加

VARNAME=$VARNAME:VALUE1

常用的就是路径PATH的添加

PATH=$PATH:.
定义整型变量

declare -i 变量
declare -x 变量 声明为环境变量

  declare -i SUM=0
shell进行算术运算

1.let 算术表达式

    let C=$A+$B

2.$[算术表达式]

    C=$[$A+$B]

3.$((算术表达式))

    C=$(($A+$B))

4.expr 算术表达式,表达式中各操作数及运算符之间有空格,而且使用命令引用

    C=`expr $A + $B`

3.总结

以上都是记录型的内容,只是为了记录。真正能记住,应该是遇到具体的问题之后,回过头来查看,才会记住某一个点。不过这些都是基石,接下去的shell编程尽量更加精彩。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值