shell变量 - pingdongyi/blog-2 GitHub Wiki
var = val
如果取值包含有空格,则必须用双引号括起来
echo ${name}
#或
echo "hello, $name"
name = 'bill'
unset name
$set
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.cgO3yzgLRL/Render
BASH=/bin/bash
BASH_ARGC=()
BASH_ARGV=()
echo ${var1}${var2}
${var:-value}
$name=bill
$echo "hello,${name:-bing}"
hello,bill
$echo "hello,${name1:-bing}"
hello,bing
##上面没有实际赋值,如果没有则实际赋值,如下
${var:=value}
##如果没有赋值,返回系统错误信息,如下
${var:?}
##或给出相应的提示
${var:?'sorry cannot read the var'}
##如果未设置返回空串,如下
${var:+val}
如果设置了变量var则使用其值,如果未设置则使用新值value。
name = bill
readonly name
##查看只读变量
$readonly
declare -ar BASH_VERSINFO='([0]="3" [1]="2" [2]="57" [3]="1" [4]="release" [5]="x86_64-apple-darwin15")'
declare -ir EUID="502"
declare -ir PPID="5071"
declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"
declare -ir UID="502"
只读变量只需要在前面用readonly标识,如果有人包括本人在内要改变其值,则返回错误
环境变量用于所有用户进程(经常称为子进程)。登录进程称为父进程。shell中执行的用户进程均称为子进程。
环境变量可在命令行设置,但用户注销时值将丢失,因此最好在.bash_profile或.profile中设置,其中的值在每次登录时会初始化。一般所有的环境变量都为大写。且用于用户进程前,必须用export命令导出。
VAR = vale
export VAR
echo $VAR
#查看所有环境变量
evn
TERM_PROGRAM=iTerm.app
SHELL=/bin/bash
TERM=linux
CLICOLOR=1
unset VAR
-
CDPATH
改变目录路径变量,如果设置了CDPATH,cd一个目录时,首先查找CDPATH,如果CDPATH指明了此目录,则此目录成为当前工作目录。
CDPATH=:/home/work:/user/work export CDPATH
-
EXINIT
该变量保存使用vi编辑器时的初始化选项。如调用vi时显示行号且在第10个空格加入tab键:
EXINIT='set nu tab 10' export
-
HOME
用户的主目录
-
IFS
shell指定的缺省域分隔符,要设置其返回初始设置:
IFS=<space><tab> export IFS
-
LOGNAME
此变量保存登录名,应该为缺省设置,如果没设置,则可以如下完成:
LOGNAME=`whoami` export
-
MAIL
该变量保存邮箱路径名,缺省为/var/spoolmail/·
-
MAILPATH
如果 有多个邮箱要用天MAILPATH,此变量设置将覆盖MAIL设置
-
PATH
PATH环境变量保存命令查找的目录顺序
-
PS1
基本提示符包含shell提示符,缺省对超级用户为#,其他为$
echo $PS1 $ PS1 = '->' export PS1
-
PS2
PS2为附属提示符,缺省为符号>.PS2用于执行多行命令或超过一行的一个命令
-
SHELL
SHELL变量保存缺省shell
$echo $SHELL /bin/bash
-
TERMINFO
终端初始化变量保存终端配置文件的位置。通常在/user/lib/terminfo或/usr/share/terminfo
-
TERM
保存终端类型,设置TERM使应用获知终端对屏幕和键盘开头一人控制序列类型
$echo $TERM linux
-
TZ
时区变量保存时区值,只有系统管理员才可以更改此设置
-
EDITOR
设置编辑器器,最常用
EDITOR=vi export EDDITOR
-
PWD
当前目录
-
PAGER
保存屏幕翻页命令,如pg、more
-
MANPATH
保存系统上man文本的目录
-
LPDEST或PRINTER
保存缺省打印机名,用于打印作业时指定打印机名。
在脚本中定义变量后只有export后才能在其的脚本中引用修改,就像设置了全局变量一样
运行脚本,并在脚本中获取命令行传递的参数就用$n,$0为脚本名,$1...9等为相应的参数
- $# 传递到脚本的参数个数
- $* 以一个单字符串显示所有向脚本五福星人参数。与位置变量不同,此选项参数可超过9个
- $$ 脚本运行的当前进程ID号
- $! 后台运行的最后一个进程的进程ID号
-
$@ 与$ #相同,但是使用时加引号,并在引号中返回每个参数 - $- 显示shell使用的当前选项,与set命令功能相同
- $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误