环境变量
我们可以直接在shell 脚本中输入$环境变量
,来引用它们。
$ cat test4
#!/bin/bash
echo User is: $USER, userid is: $UID, home is: $HOME.
调用
$ test4
User is: mugpeng, userid: is 501, home is: /Users/mugpeng.
ps:如果我们想要输出$
,可以使用\
反斜线进行转义。
用户变量
和其他的编程脚本一样,linux 也支持我们定义自己的变量,称为用户变量。
用户变量可以为任何由字母、数字、下划线组成的文本字符串,但长度不能超过20个字符
。另外linux是识别大小写的
。
我们可以用等号为变量赋值,并通过与环境变量一样的方法,也即使用$变量
的方法调用它。如果在变量前不加上$
,linux 会认为其是普通的文本字符串。
$ a=10
$ echo $a
10
命令替换
当我们使用linux 的各种命令,ls
, df
, ps
等时,都会返回许许多多的信息。而shell 脚本最有用的特性之一便是从这些命令输出中提取信息。
其中一个方法便是将这些返回值赋给变量,再对变量进行处理。
一共有两种将命令输出赋值给变量的方法:
a=`date` # 注意是反引号
a=$(date) # 注意要用圆括号
小例子
$ a=$(date)
$ echo $a
Wed Jun 10 22:47:44 CST 2020
- 当然,命令替换的吸引之处不在这里。
通过命令替换,我们可以设计一个将指定一段内容值保存的日志文件命名为当前日期下的特定名称。
其中> 表示将目录列表内容重定向输出到 log 日志文件。而该文件后缀则通过$today 变量
,指定唯一的date 内容。
该脚本在不同的时间运行,也会按照
#!/bin/bash
today=$(date +%y%m%d)
ls /usr/bin -al > log.$today
运行脚本
$ chmod u+x test5
$ test5
$ ls log*
log.200610
而在明天,或其他不同的时间,也会按照指定的date 的样式,我们是%y%m%d
,对log 进行命名。
网友评论