前面得文章介绍过一些基础的 Linux 命令了,这小节将手把手带初学者创建一个 shell 脚本,shell 脚本会将多个命令放在一个文件中,让 shell 依次执行,帮我们完成任务。
shell 脚本的关键是能够输入多个命令并处理每个命令的结果,甚至是将一个命令的结果传给另一个命令。
本节内容:
- 执行多个命令
- 创建shell脚本
- 显示消息——echo命令
Linux 系统允许在同一行执行多个命令,彼此用分号
;
隔开:
例如:wkd@ubuntu:~$ date ; who Sun Jul 9 22:07:27 CST 2023 wkd pts/10 2023-06-30 23:16 (192.168.2.180) wkd pts/11 2023-07-03 10:09 (192.168.2.180) wkd pts/13 2023-07-03 10:12 (192.168.2.180) wkd pts/14 2023-07-03 14:41 (192.168.2.180) wkd pts/16 2023-07-06 09:38 (192.168.2.180) wkd@ubuntu:~$
date 命令先运行,显示当前日期和时间,随后是 who 命令的输出,显示当前已登录系统的用户。
通过这种办法,能将任意多个命令串联在一起使用,只要不超过命令行最大字符数 255 就可以。
从shell脚本的定义来看,使用多个命令已经是一个小型的shell脚本了;但必须在命令提示符处输入整个命令。下个小节介绍将这些命令组合成一个简单的文本文件,这样就无须再手动输入了。
初学者创建自己的第一个shell脚本文件,可以按照下面四个步骤来操作:
创建一个test.sh的文件,使用文本编辑器编辑该文件。
在创建 shell 脚本文件时,必须在文件的 第一行 指定要使用的 shell,格式是在符号#!
后加上shell的绝对路径,如下:#!/bin/bash
说明:
#
后面的惊叹号(#!
)会告诉 shell 用哪个 shell 来运行脚本。
#
用作注释行,shell 并不会处理 shell 脚本中的注释行
在指明了 shell 之后,可以在文件的各行输入命令,每行末尾加一个换行符。需要注释的可用#添加,下面是在上一步添加完的脚本:
#!/bin/bash # This script displays the date and who's logged on date who
第一行指明shell;第二行是注释;第三行是date命令,第四行是who命令。
在编写完脚本后,可以使用
ls -l
命令去查看脚本是否有执行权限,如果没执行权限的话,需要执行下面命令赋予文件属主执行权限:chmod u+x test.sh
添加完执行权限后,就到下一步了,执行脚本
脚本有了执行权限后,要执行脚本,就是要让shell可以找到 test.sh 文件,可以采用下列两种方法之一:
- 将放置 shell 脚本文件的目录添加到 PATH 环境变量中;
- 在命令行中使用绝对路径或相对路径来引用 shell 脚本文件。
我们这个例子使用第二种方法,可以使用单点号来引用当前目录下的文件:
wkd@ubuntu:~$ ./test.sh Sun Jul 9 22:47:29 CST 2023 wkd pts/10 2023-06-30 23:16 (192.168.2.180) wkd pts/11 2023-07-03 10:09 (192.168.2.180) wkd pts/13 2023-07-03 10:12 (192.168.2.180) wkd pts/14 2023-07-03 14:41 (192.168.2.180) wkd pts/16 2023-07-06 09:38 (192.168.2.180) wkd@ubuntu:~$
至此,第一个Shell脚本就创建完成并执行完成了。
在 echo 命令后面加上字符串,那么 echo 命令就会显示出这个字符串:
wkd@ubuntu:~$ echo This is a test This is a test wkd@ubuntu:~$
echo 命令可用单引号或双引号来划定字符串。如果你在字符串中要用到某种引号,可以使用另一种引号来划定字符串:
wkd@ubuntu:~$ echo "This is a test to see if you're paying attention" This is a test to see if you're paying attention wkd@ubuntu:~$ echo 'Rich says "scripting is easy".' Rich says "scripting is easy". $
-n 选项可以把字符串和命令输出显示在同一行中:
wkd@ubuntu:~$ echo -n "The time and date are: " ; date The time and date are: Sun Jul 9 22:57:58 CST 2023 wkd@ubuntu:~$
如果文章有帮助的话,点赞、收藏⭐,支持一波,谢谢