shell变量

时间:2019-04-16 23:59:04  来源:igfitidea点击:

shell中变量可以用来存储数据和配置选项。变量有两种类型: 系统变量用户自定义变量

系统变量

系统变量是由shell本身创建和维护。
他们通常是用大写字母定义(auto_resume和histchars除外)。

如何查看所有的系统变量

使用命令:

[root@rhel6 ~]# set

或者

[root@rhel6 ~]# env
MAIL=/var/spool/mail/root
PWD=/root
KDE_IS_PRELINKED=1
LANG=en_US.UTF-8
KDEDIRS=/usr
HISTCONTROL=ignoredups
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
HOME=/root
SHLVL=2

或者

[root@rhel6 ~]# printenv

常用的shell系统变量

系统变量说明
BASH_VERSIONbash版本
HOSTNAME主机名
CDPATHcd命令的搜索路径。
HISTFILE保存命令历史记录的文件名。
HISTFILESIZE历史记录文件中包含的最大行数。
HISTSIZE在命令历史记录中要记住的命令数。默认值为500。
HOME当前用户的主目录。
IFS内部字段分隔符。默认值为
LANG语言环境。
PATH命令的搜索路径。
PS1控制台提示设置。
TMOUT内置读取命令的默认超时时间。
TERM您的登录终端类型。
SHELL设置登录shell的路径。
DISPLAY设置显示的名称
EDITOR设置默认文本编辑器的名称。

如何查看系统变量的值?

使用echo命令显示变量的值。例如显示程序搜索路径:

[root@rhel6 ~]# echo "$PATH"
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

查看控制台提示:

[root@rhel6 ~]# echo "$PS1"
[\u@\h \W]$ 

所有变量名必须以$符号开头,并且用引号括起来。

变量名也可以用大括号括起来,特别是在编程时,变量后面跟着字符,必须使用大括号,例如:

echo "${HOME}"
echo "${HOME}work"

printf命令

printf命令就像echo命令一样,可以在不同版本的UNIX操作系统中使用。
但是printf更具有可移植性:

printf "$VARIABLE_NAME\n"
printf "字符串 %s" $VARIABLE_NAME
printf "十进制数 %d" $VARIABLE_NAME
printf "浮点数 %f" $VARIABLE_NAME

使用printf可以有多种写法,例如,查看命令的搜索路径:

printf "$PATH\n"

还可以这样写

intf "path: %s\n" $PATH

用户定义的变量

由用户创建和维护。自定义的变量可以使用任何有效的变量名,但是最好避免全部使用大写,防止和系统变量冲突。

变量命名规则

变量名必须以字母数字或下划线字符(_)开头,后跟一个或多个字母数字或下划线字符。

有效的shell变量的例子:

HOME
SYSTEM_VERSION
vech
no1
_count

shell变量名是区分大小写的

no=10
No=11
NO=20
nO=2