Shell变量命名
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:
var="This is test"
shell变量的命名规则:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
系统变量
在命令行提示符直接执行 env、 set 查看系统或环境变量。 env 显示用户环境变量, set 显示 Shell预先定义好的变量以及用户变量。可以通过 export 导出成用户变量。
一些写 Shell 脚本时常用的系统变量:
变量 | 作用 |
---|---|
$SHELL | 默认 Shell |
$HOME | 当前用户家目录 |
$IFS | 内部字段分隔符 |
$LANG | 默认语言 |
$PATH | 默认可执行程序路径 |
$PWD | 当前目录 |
$UID | 当前用户 ID |
$USER | 当前用户 |
$HISTSIZE | 历史命令大小,可通过 HISTTIMEFORMAT 变量设置命令执行时间 |
$RANDOM | 随机生成一个 0 至 32767 的整数 |
$HOSTNAME | 主机名 |
普通变量和临时变量
普通变量定义: VAR=value
临时环境变量定义: export VAR=value
变量引用: $VAR
两者之间的区别:
Shell 进程的环境变量作用域是 Shell 进程,当 export 导入到系统变量时,则作用域是 Shell 进程及其 Shell 子进程。
说明:前终端下的所有进程的 PPID 都是-bash 的 PID,比如执行命令、运行脚本。所以当在-bash 下设置的变量,只在-bash 进程下有效,而-bash 下的子进程 bash 是无效的,当export 后才有效。
位置变量
位置变量指的是函数或脚本后跟的第 n 个参数。$1-$n
,需要注意的是从第 10 个开始要用花括号调用,例如${10}
实例:
vim example.sh
#!/bin/bash
echo "当前脚本名称为$0"
echo "总共有$#个参数,分别是$*。"
echo "第一个参数为$1,第五个参数为$5。"
运行结果:
bash example.sh 1 2 3 4 5 6
当前脚本名称为example.sh
总共有6个参数,分别是1 2 3 4 5 6。
第一个参数为1,第五个参数为5。
特殊变量
变量名 | 作用 |
---|---|
$0 | 脚本自身名字 |
$? | 返回上一条命令是否执行成功, 0 为执行成功,非 0 则为执行失败 |
$# | 位置参数总数 |
$* | 所有的位置参数被看做一个字符串 |
$@ | 每个位置参数被看做独立的字符串 |
$$ | 当前进程 PID |
$! | 上一条运行后台进程的 PID |
shell注释
单行注释
# 这是一个注释
多行注释
:<<EOF
注释内容...
注释内容...
注释内容...
EOF
或者
:<<'
注释内容...
注释内容...
注释内容...
'
:<<!
注释内容...
注释内容...
注释内容...
!