shell脚本
shell脚本的关键在于输入多个命令并处理每个命令的结果,甚至需要将一个命令的结果传给另一个命令。
之前我们学过可以将多个命令串起来执行,彼此之间用分号隔开即可
这就是一个最简单的shell脚本,date命令先运行,显示当前的时间与日期,后面who命令显示当前登录在系统上的用户(最长命令字符为255个)
这种输入的方式每次都要重新输入,我们就可以将这些命令保存为文本文件的形式,这样就不需要再命令行中手动输入这么多的命令,需要运行时,只需要运行这个文本文件即可。
要将shell命令放入到文本文件中,首先就需要一个文本文件,使用之前提到的文本编辑器vim来创建文件,然后将命令输入到脚本中。
在创建shell脚本时,必须在文件的第一行指定要使用的shell(shell只会解释第一行的#!)
# ! /bin/bash
(#)号用作shell脚本的注释行,shell并不会处理shell脚本中的注释行,但是shell脚本文件的第一行是个例外,(#)后面的惊叹号会告诉shell用哪个版本的shell来运行这个脚本。
指定shell之后,就可以在文件的每一行中输入命令,然后加一个回车符
也可以根据需要将两个命令写在一行,但是要用分号隔开,也可以在独立的行中书写。
写完后,将文件保存即可.
但是首先要让shell找到这个文本文件,可能需要一下做法:
1:将shell脚本文件所处的目录添加到PATH环境变量中
2:在提示符中用绝对路径或者相对路径来引用shell脚本文件
(注:有的Linux发行版将$HOME/bin目录添加进了PATH环境变量,他在每个用户的HOME目录下都提供了一个存档文件的地方,shell可以再哪里找到要执行的命令)
使用单点符号表示当前目录,但是还有一个问题就是,shell指明了还没有执行文件的权限,使用ls即可查看到其权限情况:
umask变量决定了所创建文件只有属主和属组有读写权限,而其他用户只有读的权限,说明都没有执行权限
所以又需要通过chmod命令赋予文件属主执行文件的权限
到此,即可执行该文件脚本
很多时候,命令的执行都会带来一些输出,这个时候,可能你还想添加自己的文本消息来告诉脚本用户脚本正在做什么。此时可以通过echo命令来实现这一点。
需要注意的是,echo命令后加的消息中如果有引号出现,则需要使用另一种引号将其划定界限
我们可以在shell脚本中的任意位置加上echo输出
此脚本运行时
echo命令的 -n参数可以让文本字符串和命令的输出 出现在同一行
echo -n "The time and date are: "
此字符串的尾部有空格,以显示美观
这一节学习了如何运行一个简单的shell脚本,
如何创建并编辑文本
vim
撰写脚本
#! /bin/bash
运行脚本
chmod u+x test
./test
运行中附带文本信息
echo