变量
赋值与打印
#!/bin/bash
#文件名:variables.sh
fruit=apple
count=5
echo "We have $count ${fruit}(s)" #因为shell使用空白字符来分隔单词,所以我们需要加上一对花括号来告诉shell这里的变量名
是fruit,而不是fruit(s)
执行
We have 5 apple(s)
获取变量长度
通过 ${#var}
$ var=12345678901234567890
$ echo ${#var}
20
环境变量
如何查看环境变量
(1)查看所有的环境变量
$ printenv
$ env
(2)查看某一进程的环境变量
$ pgrep mysql
1501
12496
$ cat /proc/1501/environ #其中,PID是相关进程的进程ID
特殊文件/proc/PID/environ是一个包含环境变量以及对应变量值的列表。每一个变量以name=value的形式来描述,彼此之间由null字符(\0)分隔。形式上确实不太易读.
要想生成一份易读的报表,可以将cat命令的输出通过管道传给tr,将其中的\0替换成\n
$ sudo cat /proc/12496/environ | tr '\0' '\n'
(3) 查看环境变量
ocean@ubuntu:~/workspaces/shell$ echo $PWD
/home/ocean/workspaces/shell
ocean@ubuntu:~/workspaces/shell$ echo $HOME
/home/ocean
$ echo $USER
ocean
(4) 识别当前所用的shell
$ echo $SHELL #可以通过环境变量SHELL获知当前使用的是哪种shell
/bin/bash
$ echo $0
bash
(5)特别的PATH变量:
- PATH变量列出了一系列可以共shell搜索特定应用程序的目录,各目录路径之间以:分隔。$PATH通常定义在/etc/environment、/etc/profile或~/.bashrc中
$ echo $PATH
/home/ocean/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/go/bin:/home/ocean/workspaces/go/bin
如果想要在SHELL中添加一条新路径
$ export PATH="$PATH:/home/user/bin"
(6) 检查是否为超级用户
环境变量UID中保存的是用户ID,root用户的UID是0
#!/bin/bash
if [ $UID -ne 0 ]; then
echo Non root user. Please run as root.
else
echo Root user
fi
参考:<Linux_Shell脚本攻略>