shell基础--命令----各种变量

it2023-09-09  77

文章目录

变量1.shell中变量命名法则:2.Shell中命名建议规则:declare用法***3.局部变量(无继承)4.环境变量(有继承性)5. 只读变量6.位置变量7. 退出状态

变量

作用: 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

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 历史记录长度 _ 下划线 上调命令最后一个参数

这里的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 $?
最新回复(0)