Shell
变量
-
变量名的命名规则
- 字母、数字、下划线
- 不以数字开头
-
给变量赋值
- a=123 "="左右两边不允许出现空格,系统会认为左边是一条命令去执行
- let a=10+19
- l=ls 将命令赋值给变量
- letc=$(ls -l /etc) 将命令结果赋值给变量,使用$()或''
- 变量中若有空格或特殊字符,可包含在" "或 ' ' 中
-
变量引用
- ${变量名} 引用变量,在部分情况下可以省略为 $变量名
-
变量一般作用在当前的shell进程和当前的终端中,若想要对当前进程也生效的话,使用 source 方式执行脚本
-
环境变量:每个shell打开都可以获取的变量
-
set、env、export 变量
- set 用来显示本地变量,显示当前shell的变量,包括当前用户的变量
- env 用来显示环境变量,显示当前用户的变量
- export 用来显示和设置环境变量, 显示当前导出成用户变量的shell变量。export + 变量,可以使子进程获取父进程的变量取值
-
$? 上一条命令是否正确执行成功; $$ 显示当前进程的PID; $0 当前进程的名称;
-
$PATH 命令的搜索路径
- PATH=$PATH:/root 若一个命令文件放在/root 下面,通过这个方式将/root 添加到搜索路径下,则在任何地方都可以直接执行文件,从而执行命令。对当前终端和子shell生效,换其他终端则无效。
-
$PS1
-
-
位置变量
- $1 $2 $3 ... $9 ${10}
- pos=${1-_} 表示若$1的取值是空值,则用下划线给pos赋值;若$1有内容,则用$1赋值
-
环境变量配置文件
- 配置文件,保存在/etc 目录下面的配置文件,都是通用的,普通用户可用。~下面的配置文件,是用户的家目录配置文件
- /etc/profile 保存系统和终端启动时的配置文件,使用su - +用户名 时,这个文件第一个被加载。例如 su - root 依次加载的文件:
/etc/profile
.bash_profile
.bashrc
/etc/bashrc
以上顺序,若在定义变量时,在各个配置文件中若名称有重复,后面的执行的脚本会把前面的变量给覆盖掉。
若要使当前系统的所有终端都可用,使用下面语句:
export PATH=$PATH:/new/path 将该语句写入到上面的配置文件中,则父进程和子进程,以及所有终端都可以使用相关环境变量。 - /etc/profile.d/
- ~/.bash_profile
- ~/bashrc
- /etc/bashrc
- /etc/profile 保存系统和终端启动时的配置文件,使用su - +用户名 时,这个文件第一个被加载。例如 su - root 依次加载的文件:
- 在配置文件中添加环境变量后,如何生效?
- 关掉终端,重新打开
- source + 配置文件 执行,如 source /etc/bashrc
- 配置文件,保存在/etc 目录下面的配置文件,都是通用的,普通用户可用。~下面的配置文件,是用户的家目录配置文件
数组
- 定义数组
- IPTS=(10 11 12)
- 显示数组所有元素
- echo ${IPTS[@]}
- 显示数组元素个数
- echo ${#IPTS[@]}
- 显示数组的第一个元素
- echo ${IPTS[0]}