Shell学习——变量

Posted pigwan7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell学习——变量相关的知识,希望对你有一定的参考价值。

1、在Bash中,每一个变量的值都是字符串
2、查看某个进程的环境变量
cat /proc/$PID/environ | tr ‘‘ ‘ ‘
3、变量赋值
3.1、var=value,注意var = value不是赋值操作,而是相等操作
3.2、若value包含任何空白字符,则必须使用单引号或者双引号
4、打印变量
[[email protected] 978]# var=value
[[email protected] 978]# echo $var
value
[[email protected] 978]# echo ${var}
value
5、在echo或printf中若要引用变量,则要使用双引号
[[email protected] 1]# fruit=apple
[[email protected] 1]# echo "we have five $fruit(s)"
we have five apple(s)
6、环境变量
6.1、环境变量是未在当前进程中定义,从父进程继承过来的变量
6.2、export用来设置环境变量,设置之后,从当前shell脚本执行的任何应用程序都会继承这个变量
6.3、在给出所要执行的命令后,shell会自动在PATH环境变量所包含的目录列表中,查找对应的可执行文件
7、获得变量长度
[[email protected] 1]# var=124hello
[[email protected] 1]# length=${#var}
[[email protected] 1]# echo $length
8
[[email protected] 1]# echo ${#var}
8
8、常用环境变量
[[email protected] 1]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] 1]# echo $HOME
/root
[[email protected] 1]# echo $SHELL
/bin/bash
[[email protected] 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、使用函数添加环境变量
[[email protected] ~]# prepend() { [ -d "$2" ] && eval $1="$2‘:‘$$1" && export $1; }
[[email protected] ~]# T1=/home
[[email protected] ~]# prepend T1 /root
[[email protected] ~]# echo $T1
/root:/home
但若是T1初始值为空,结果如下
[[email protected] ~]# echo $T1
 
[[email protected] ~]# prepend T1 /root
[[email protected] ~]# echo $T1
/root:
需要增加一个判断,引入shell参数扩展的形式
${param:+expr}
若param有值且不为空,则使用expr的值
[[email protected] ~]# prepend() { [ -d "$2" ] && eval $1="$2${$1:+‘:‘$$1}" && export $1; }
[[email protected] ~]# prepend T1 /root
[[email protected] ~]# echo $T1
/root

以上是关于Shell学习——变量的主要内容,如果未能解决你的问题,请参考以下文章

shell学习2shell变量

shell脚本的学习和使用

shell脚本的学习和使用

shell脚本的学习和使用

shell脚本学习------变量

shell基础学习