Shell变量及其相关命令
shell变量
两种类型:shell环境变量(shell environment variable) 、用户自定义变量(user-defined variable);
shell环境变量,定制shell运行环境并保证shell命令的正确执行。实现方式,它们的拷贝被传递给每个作为shell的子进程运行的命令。初始化,在登录过程中执行/etc/.profile文件时进行,该文件由系统管理员设置,用于为系统上所有的用户建立一个公共环境,另外用户自己也有自己的启动文件~/.profile。
CDPATH EDITOR ENV HOME MAIL MAILCHECK PATH PPID PS1 PS2 PWD TERM #都是可写的
# 只读环境变量: 处理 命令行参数 又称 位置参数 命令行传递给shell脚本的参数
# 有一些只读shell变量用来跟踪当前进程的pid、最近后台进程pid,以及最后一条命令的退出状态等
$0 # 程序名
$1 - $9 # 第1个~第9个命令行参数的值
$* # 所有命令行参数的值
$@ # 同上;如果它被包含在引号中,如“$@”,则每个参数也各自包含在引号中
$# # 命令行参数的总数
$$ # 当前进程pid
$? # 最后一条命令的退出状态
$! # 最近后台进程(在后台运行的最后一个进程) pid
读写shell变量
注意: = 前后没空格;($)引用变量的当前值;
$ name=John # 1
$ echo $name
John
$ name=John Doe # 2.1.1 space,后面的当作命令执行
Doe: not found
$ name=”John Doe” # 2.1.2 double quote resolve
$ echo $name
John Doe
$ name=John* # 2.2.1 shell metacharacter,后面的当作shell元字符
$ echo $name
John.Bates.letter John.Johhsen.memo John.email
$ echo “$name” # 2.2.2 double quote resolve
John*
$ echo “The name $name sounds familiar!” # 2.2.3 double quote 只要在双引号里,对$做特殊处理,特殊字符替换为普通字符
The name John* sounds familiar!
$ echo /$name # 3.1
$name
$ echo ‘$name’ # 3.2
$name