• 一、变量赋值
  • 1.1、语法
  • 1.2、输出端打印变量
  • 二、环境变量
  • 三、补充内容
  • 3.1、获取字符串长度
  • 3.2、识别当前所使用的shell是那种shell:
  • 3.3、检查是否为超级用户
  • 4、修改bash提示字符串
  • 4.1 修改提示字符串
  • 4.2字体颜色



在bash中每一个变量都是字符串,无论你给变量赋值时有没有使用引号,值都以字符串的形式存储。


有一些特殊的变量会被shell环境和操作系统环境用来存储一些特别的值。这类变量就是环境变量。

对进程来说,其运行时的环境变量可以使用下面的命令来查看:

cat /proc/$pid/environ

系统中装有mysql应用,用pgrep 命令查看mysql的pid

pgrep mysql

Linux脚本攻略学习笔记(二)_linux环境变量设置演示

然后就可以通过cat 命令来获取该进程相关的环境变量

cat /proc/2559/environ

Linux脚本攻略学习笔记(二)_Linux脚本攻略学习笔记_02

一、变量赋值

1.1、语法

var=value
var是变量名,value是赋给变量的值。如果value不包含任何空白字符(例如空格),那么它就不需要使用引号进行引用,否则必须使用单引号或双引号。需要注意的是var=value 不同于 var = value 。
把var=value 写成var =value 是一个常见的错误。

1.2、输出端打印变量

echo $var 就可以打印变量var的内容
或者echo ${var}

在 目录下创建variables脚本

#!/bin/bash
# 文件名:variables.sh
fruit=apple
count=5
echo "We have $count ${fruit} "

Linux脚本攻略学习笔记(二)_环境变量_03

执行脚本

./variables.sh

Linux脚本攻略学习笔记(二)_Linux脚本攻略学习笔记_04

二、环境变量

环境变量是未在当前进程中定义,而从父进程中继承而来的变量。例如环境变量MYSQL_HOME,它定义了mysql安装目录。该环境变量设置如下。

MYSQL_HOME=/usr/local/mysql
export MYSQL_HOME

Linux脚本攻略学习笔记(二)_Linux变量赋值以及打印演示_05


export 命令用来设置环境变量。至此之后,从当前shell脚本执行的任何应用程序都会继承这个环境变量。我们可以按照自己的需要,在执行的应用程序或者shell脚本中导出特定的变量。在默认情况下,有很多标准环境变量可供shell使用。PATH就是其中之一。通常,变量PATH包含:

echo $PATH

Linux脚本攻略学习笔记(二)_Linux变量赋值以及打印演示_06

在给出所执行的命令后,shell会自动在PATH环境变量所包含的目录列表中(各目录路径之间以冒号分隔),PATH通常定义在/etc/enviroment或/etc/profile 或 ~/.bashrc中。如果需要在PATH中添加一条新路径。
可以使用

export PATH="$PATH:/home/user/bin"

也可以使用

PATH="$PATH:/home/user/bin"
export PATH

Linux脚本攻略学习笔记(二)_Linux脚本攻略学习笔记_07

看到用户wanghao下已经添加了,切换到root用户下看到所加路径并未加上。

Linux脚本攻略学习笔记(二)_环境变量_08

再看配置文件profile中,并未将新加的路径添加到文件中。

Linux脚本攻略学习笔记(二)_linux环境变量设置演示_09

所以export命令设置的环境变量只会在当前的shell中生效。其他应该属性的环境变量:HOME,PWD,USER,UID,SHELL等。
题外扩展: 其他环境变量的意义
1.PATH:指定命令的搜索路径
2.HOME:指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
3.HISTSIZE:指保存历史命令记录的条数。
4.LOGNAME:指当前用户的登录名。
5.HOSTNAME:指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
6.SHELL:指当前用户用的是哪种Shell。
7.LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
9.PS1:命令基本提示符,对于root用户是#,对于普通用户是$。
10.PS2:附属提示符,默认是“>”。
11 PWD PWD变量存放的就是当前工作的路径,PWD的值与pwd命令的结果完全相同。

三、补充内容

3.1、获取字符串长度

number=123456
   echo ${#number}

Linux脚本攻略学习笔记(二)_Linux变量赋值以及打印演示_10

即可输出字符串的长度。

3.2、识别当前所使用的shell是那种shell:

echo $SHELL
或者
echo $0

Linux脚本攻略学习笔记(二)_环境变量_11

3.3、检查是否为超级用户

UID 是一个重要的环境变量,可以用于检查当前脚本是否以超级用户还是以普通用户的身份运行。
root 用户的UID 是0
以下脚本用户识别root用户
-ne 是不等于

#! /bin/bash
if [ $UID -ne 0 ]
then
        echo Non root user. Please run  as root.
else
        echo  Root user
fi

或者

eq  等于
#!/bin/bash
if [ $UID -eq 0]
then
  echo Root user. 
else
  echo    echo Non root user. Please run  as root.
fi

执行结果

Linux脚本攻略学习笔记(二)_linux环境变量设置演示_12

4、修改bash提示字符串

当我们打开终端或是运行shell时,会看到类似于user@hostname:/home/$的提示字符串。不同于GNU/Linux发布版中的提示及颜色略有不同。可以利用PS1环境变量来定制提示文本。默认的shell提示文本是在文件~/.bashrc中的某一行设置的。

Linux脚本攻略学习笔记(二)_环境变量_13

4.1 修改提示字符串

设置定制的提示字符串
可以使用如下命令设置变量ps1的那一行。

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$'

\u 可以扩展为用户名,\h 可以扩展为主机名 \w可以扩展为当前工作目录。

修改为user@当前工作目录 PS1="\u@\W$"

Linux脚本攻略学习笔记(二)_linux环境变量设置演示_14

4.2字体颜色

字体颜色是由一个ANSI 转义编码来控制的。该控制编码会嵌入字符流中并发送给终端仿真器。但是,该控制编码不会被“打印”到屏幕上,而是会被终端解释为一个指令。正如我们在上表看到的字符序列, 这个 [ 和 ] 序列被用来封装这些非打印字符。一个 ANSI 转义编码以一个八进制033(这个编码是由 退出按键产生的)开头,其后跟着一个可选的字符属性(0:正常、1:黑体、4:下划线、5:闪烁、7:反向(前景色和背景色反转)),在之后是一个指令。
实例演示
设置提示符格式为
[u@w]$ 提示付颜色为浅红,输入命令为浅蓝色

PS1="\033[1;31m[\u@\W]\033[1;34m\$"

效果如下

Linux脚本攻略学习笔记(二)_Linux脚本攻略学习笔记_15