Shell学习——变量

1、在Bash中,每一个变量的值都是字符串
2、查看某个进程的环境变量
cat /proc/$PID/environ | tr '' ' '
3、变量赋值
3.1、var=value,注意var = value不是赋值操作,而是相等操作
3.2、若value包含任何空白字符,则必须使用单引号或者双引号
4、打印变量
[root@client02 978]# var=value
[root@client02 978]# echo $var
value
[root@client02 978]# echo ${var}
value
5、在echo或printf中若要引用变量,则要使用双引号
[root@client02 1]# fruit=apple
[root@client02 1]# echo "we have five $fruit(s)"
we have five apple(s)
6、环境变量
6.1、环境变量是未在当前进程中定义,从父进程继承过来的变量
6.2、export用来设置环境变量,设置之后,从当前shell脚本执行的任何应用程序都会继承这个变量
6.3、在给出所要执行的命令后,shell会自动在PATH环境变量所包含的目录列表中,查找对应的可执行文件
7、获得变量长度
[root@client02 1]# var=124hello
[root@client02 1]# length=${#var}
[root@client02 1]# echo $length
8
[root@client02 1]# echo ${#var}
8
8、常用环境变量
[root@client02 1]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@client02 1]# echo $HOME
/root
[root@client02 1]# echo $SHELL
/bin/bash
[root@client02 1]# echo $UID
0
9、set、env和export的区别
9.1、set显示当前shell的变量(私有变量),包括当前用户的变量,不同类的shell有不同的私有变量,bash、ksh、csh的shell私有变量都不同
9.2、env显示当前用户的变量
9.3、export显示当前导出成用户变量的shell变量
10、通过设置PS1变量可以设置Bash提示字符串
11、使用函数添加环境变量
[root@client02 ~]# prepend() { [ -d "$2" ] && eval $1="$2':'$$1" && export $1; }
[root@client02 ~]# T1=/home
[root@client02 ~]# prepend T1 /root
[root@client02 ~]# echo $T1
/root:/home
但若是T1初始值为空,结果如下
[root@client02 ~]# T1=
[root@client02 ~]# echo $T1
 
[root@client02 ~]# prepend T1 /root
[root@client02 ~]# echo $T1
/root:
需要增加一个判断,引入shell参数扩展的形式
${param:+expr}
若param有值且不为空,则使用expr的值
[root@client02 ~]# prepend() { [ -d "$2" ] && eval $1="$2${$1:+':'$$1}" && export $1; }
[root@client02 ~]# T1=
[root@client02 ~]# prepend T1 /root
[root@client02 ~]# echo $T1
/root
原文地址:https://www.cnblogs.com/pigwan7/p/9626869.html