1.3.2实战演练
可以使用等号操作符为变量赋值:
varName=value
varName是变量名,value是赋给变量的值。如果value不包含任何空白符(例如空格),那么就不需要将其放入引号中,否则必须使用单引号或双引号。
注意,var = value不同于var=value。把var=value写成var = value 是一个常见的错误。两边没有空格的等号是赋值操作符,加上空格的等号表示的事等量关系测试。
在变量名之前加上美元号($)就可以访问变量的内容。
var="varlue" #将"value赋给变量var"
echo $var
也可以这样写:
echo ${var}
#!/bin/bash
#文件名:variables.sh
fruit=apple
count=5
echo "We have $count ${fruit}(s)"
效果:
caicai@test-hp:~$ bash variables.sh
We have 5 apple(s)
因为shell使用空白字符来分隔单词,所以我们需要加上一对花括号来告诉sheel这里的变量名是fruit,而不是fruit(s)。
环境变量是从父进程中继承而来的变量。例如环境变量HTTP_PROXY,它定义了Internet连接应该使用哪个代理服务器。
该环境变量通常被设置成:
HTTP_PROXY=192.168.1.23:3128
export HTTP_PROXY
export命令声明了将由子进程所继承的一个或多个变量。这些变量被导出后, 当前shell脚本所执行的任何应用程序都会获得这个变量。shell创建并用到了很多标准环境变量,我们也可以导出自己的环境变量。
例如,PATH变量列出了一系列可供shell搜索特定应用程序的目录。一个典型的PATH变量包含如下内容:
caicai@test-hp:~$ echo $PATH
/opt/OpenWrt-Toolchain-ramips-mt7628_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-i686/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
各目录路径之间以:分隔。$PATH通常定义在/etc/environment、 /etc/profile或~/.bashrc中。
如果需要再PATH中添加一条新路径,可以使用如下命令:
export PTAH="$PATH:/home/user/bin"
也可以使用
$PATH="$PATH:/home/user/bin"
$export PATH
$echo $PATH
这样,我们就将/home/user/bin添加到了PATH中。
另外还有一些众所周知的环境变量:HOME、PWD、USER、UID、SHELL等。
1.3.3补充内容
1、 获得字符串的长度
#!/bin/bash
#文件名:variables.sh
var=1234567890
echo ${#var}
效果:
caicai@test-hp:~$ bash variable.sh
10
length就是字符串所包含的字符数。
2、 识别当前所使用的shell
可以通过环境变量SHELL获知当前使用的是哪种shell:
echo $SHELL
也可以用
echo $0
例如:
caicai@test-hp:~$ echo $SHELL
/bin/bash
执行echo $0命令也可以得到同样的输出:
caicai@test-hp:~$ echo $0
-bash
3、检查是否为超级用户
#!/bin/bash
if [ $UID -ne 0 ]; then
echo Non root user. Please run as root.
else
echo Root user
fi
效果:
caicai@test-hp:~$ bash test_3.sh
Non root user. Please run as root.
注意,[实际上是一个命令,必须将其与剩余的字符串用空格隔开。
4、修改Bash的提示字符串(username@hostname:~$)
当我们打开终端或是运行shell时,会看到类似于user@hostname:/home/$的提示字符串。不同的GUN/Linux发布版中的提示字符串及颜色各不相同。我们可以利用ps1环境变量来定义主提示字符串。默认的提示字符串是在文件~/.bashrc中的某一行设置的。
查看设置变量PS1的那一行:
如果要修改提示字符串,可以输入:
XX:执行失败。
我们可以利用类似于\e[1;31的特定转义序列来设置彩色的提示字符串(参考1.2节的内容)。
还有一些特殊的字符可以扩展成系统参数。例如:\u可以扩展为用户名,\h可以扩展为主机名,而\w可以扩展为当前工作目录。