shell:简单易明白的变量和引用

文章介绍了Shell中的变量概念,强调其动态和弱类型特性。通过`declare`命令可以定义变量的属性,如整数、只读等。变量按作用域分为环境变量(全局,影响子进程)和普通变量(局部)。环境变量可通过`export`导出,配置文件中设置可持久化。此外,文章还讨论了位置参数和预定义变量在脚本中的应用,以及字符串引用的不同方式,如单引号、双引号和反引号的差异。
摘要由CSDN通过智能技术生成

什么是变量

可以变化的量。本质上讲,变量就是在程序中保存用户数据的一块内存空间,而变量名就是这块内存空间的地址。

shell的变量类型

shell 是一种动态类型语言和弱类型语言,即在Shell中,数据类型不需要声明。
如c语言就是强数据类型,需要声明类型:int i = 1;
python语言为弱数据类型语言:i = 1

declare定义变量的类型

根据数据类型分类

注:declare命令还可输出所有的变量、函数、整数和已经导出的变量

declare 的参数大概解释

+/-  "-"可用来指定变量的属性,"+"则是取消变量所设的属性

-p:显示所有变量的值

-i:将变量定义为整数

-r:将变量声明为只读变量。只读变量不允许修改和删除

-a:变量声明为数组变量。但这没有必要,所有变量都不必显示定义就可以用作数组。

-f:显示所有自定义函数,包括名称和函数体。

-x:将变量设置成环境变量。可使用+x将变量变成非环境变量

根据作用域分类

根据作用域可将变量分为环境变量(全局变量)和普通变量(局部变量)

一、环境变量
可以在创建它们的shell及其派生出来的任意子进程shell中使用(su - 切换用户会读取新的环境变量),环境变量又可分为自定义环境变量和bash内置的环境变量

(1)自定义环境变量
一般是指用export内置命令导出的变量,用于定义shell的运行环境,保证shell命令的正
确执行。环境变量可以在命令行中设置和创建,但用户退出命令行时这些变量值就会丢失,
即该环境变量只在当前shell和子shell中有效。如果希望永久保存环境变量,可以在配置文件
中设置。
①用户的环境变量配置: /.bash_profile或~/.bashrc

②全局环境变量的配置:/etc/bashrc、/etc/profile文件或者/etc/profile.d目录中定义。

(2)bash内置的环境变量
shell内置的环境变量是所有的shell程序都可以使用的变量。shell程序在运行时,都会接
收一组变量来确定登录用户名、命令路径、终端类型、登录目录等,这组变量就是环境变量。
环境变量会影响到所有的脚本的执行结果。

在这里插入图片描述

变量的定义

1,普通变量定义
变量名=变量值
注意:“=”前后不能有空格

引用变量:$变量名 或者${变量名}

查看变量:echo $变量名,set(可查看所有变量:包括自定义变量和环境变量),env显示全
局变量,declare输出所有的变量、函数、整数和已经导出的变量。
取消变量:unset 变量名

当然定义变量这样的作用范围是:仅在当前shell中有效,可使用export指令将变量转换成环境变量

2、位置参数和预定义变量

许多情况下,Shell脚本都需要接收用户的输入,根据用户输入的参数来执行不同的操作。
从命令行传递给Shell脚本的参数又称为位置参数,Shell脚本会根据参数的位置使用不同的位
置参数变量读取它们的值。

在这里插入图片描述
创建一个shell文件 testshell.sh 在里面写入如下代码:

#!/bin/bash
echo "$#"
echo "$0"
echo "$*"
echo "$@"
echo "$?"
echo "$$"

然后保存退出,执行这个文件,输出如下,最后对照上面的自己看

[root@master ~]# ./testshell.sh 1 2
2
./testshell.sh
1 2
1 2
0
32413

shell 中的引用

1 单引号 ''
如果将字符串放到一对单引号之间,那么字符串中所有字符的特殊含义被忽略

2 双引号 “” 
双引号的引用与单引号基本相同,包含在双引号内的大部分特殊字符可以当作普通字符处理,但是仍然有一些特殊字符保留自己的特殊含义,比如”$“和“\”以及“

3 反引号 ``
反引号中的字符串将被解释为shell命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Fy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值