shell基础--各种变量,declare,set命令

变量

作用:
1、数据存储方式
2、参与的运算
3、表示的数据范围
**类型:**字符
**数值:**整型、浮点型(shell不支持小数)

1.shell中变量命名法则:

1、不能使程序中的保留字:例如if, for
2、只能使用数字、字母及下划线,且不能以数字开头
3、见名知义
4、统一命名规则:驼峰命名法
StudentName
下划线 student_name

2.Shell中命名建议规则:

1、变量名大写
2、局部变量小写
3、函数名小写
4、用英文名字,并体现出实际作用
bash中变量的种类
根据变量的生效范围等标准划分下面变量类型
局部变量生效范围为当前shell进程;对当前shell之外的其它shell进程,
包括当前shell的子shell进程均无效
环境变量:生效范围为当前shell进程及其子进程
本地变量:生效范围为当前shell进程中某代码片断,通常指函数
位置变量:$1, $2, …来表示,用于让脚本在脚本代码中调用通过命令行传
递给它的参数
特殊变量:$?, $0, $*, $@, $#,$$

declare用法***

declare -x 声明环境变量export
declare -r 声明只读变量readonly
declare -i 声明整数int

set用法

参考
set 变量 值 直接赋值

set ip  192.168.8.100

-u 当没有有变量不存在----报错—不会执行(建议使用
等同set –o nounset

-e 如果一个命令错误就会直接退出
等同set –o errexit

3.局部变量(无继承)

变量赋值:name=‘value’
可以使用引用value
(1) 可以是直接字串:name=“root"
(2) 变量引用:name="$USER"
(3) 命令引用

name=`COMMAND` 或   name=$(COMMAND)

变量引用:${name} 或者 $name
" " 弱引用,其中的变量引用会被替换为变量值
’ ’ 强引用,其中的变量引用不会被替换为变量值,而保持原字符串
显示已定义的所有变量:set
删除变量:unset name

打印变量用 echo $变量名称

给变量后面加内容 用”” 或{}括起来
在这里插入图片描述
在这里插入图片描述
把一个变量的值给另一个变量----------一定要加$
在这里插入图片描述
把命令设置成变量,这样执行变量就相当于执行这个命令
在这里插入图片描述
无继承性
在这里插入图片描述

4.环境变量(有继承性)

如果在子进程中修改环境变量----父进程的不会改变(但他的子进程会继承)
变量声明、赋值:

export name=VALUE
declare -x name=VALUE

变量引用:
$name, ${name}
显示所有环境变量:

env
printenv
export
declare -x 

删除变量:

unset name

bash内建的环境变量

BASHPID  查看当前进程编号
PPID     产看父进程编号
PATH	当前path路径
SHELL    当前shell类型   显示系统内所有的shell--># cat /etc/shell
USER		当前用户
UID			当前用户的uid
HOME		当前用户家目录
PWD			当前路径
SHLVL		当前shell的嵌套深度
LANG		语言
MAIL		当前用户邮箱
HOSTNAME	主机hostname
HISTSIZE	历史记录长度
_ 下划线      上调命令最后一个参数

特殊的
PS1命令提示符
PS2 是cat的多行重定向提示符
在这里插入图片描述

PS3是select菜单的提示符

这里的NAME已经是环境变量—所以不用加export
在这里插入图片描述

5. 只读变量

只能声明,但不能修改和删除
声明只读变量:

readonly name
declare -r name

查看只读变量:
readonly -p
例如:
pi=3.1416
readonly pi
在这里插入图片描述

6.位置变量

在脚本代码中调用通过命令行传递给脚本的参数

$1, $2, ... 对应第1、第2等参数,shift [n]换位置
$0 命令本身
$*   传递给脚本的所有参数,全部参数合为一个字符串
$@   传递给脚本的所有参数,每个参数为独立字符串
$#   传递给脚本的参数的个数
注意:$@ $* 只在被双引号包起来的时候才会有差异
set -- 清空所有位置变量

7. 退出状态

进程使用退出状态来报告成功或失败
0 代表成功,1-255代表失败

$? 变量保存最近的命令退出状态

grep -q静默模式------用这个就可以查看 $?查看上一条执行命令接结果

例如:

ping -c1 -W1 hostdown &> /dev/null 
echo $?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值