编写第一个 shell 脚本

编写第一个 shell 脚本

创建脚本文件

在创建脚本文件时,必须在文件的第一行指定要使用的 shell,比如说我要使用 bash,可以先在终端中使用 which bash 查询 bash 的位置:

/usr/local/bin/bash

然后用这个位置在脚本文件中指定使用的 shell:

#!/usr/local/bin/bash

注意前面的 #! 符号。通常在 shell 脚本中,# 用作注释行,shell 不会处理脚本中的注释行。但是,这里的第一行是个例外,# 后面的感叹号会告知 shell 使用哪个 shell 程序来运行脚本。

指定了 shell 之后,就可以在文件中的每一行输入命令,然后加一个回车符,当然,可以通过 # 添加注释信息:

#!/usr/local/bin/bash
# This script displays the date and who's logged on
echo -n "The time and date are: "
date
echo "Let's see who's logged into the system:"
who

上面就是我们创建的第一个脚本的所有内容了。可以根据需要将两个命令放在同一行,用分号隔开。shell 会按照命令在文件中出现的顺序处理。将这个文件保存在名为 test 的文件中,可以不指定后缀名。

修改权限

运行脚本文件时需要指定脚本的位置,可以将 shell 文件所处的目录添加到 PATH 环境变量中,也可以在终端中使用绝对或相对文件路径引用脚本文件。例如这里,test 文件就位于当前目录下,可以这样运行它:

./test

-bash: ./test: Permission denied

但是,shell 虽然找到了 test 脚本文件,却提示没有权限执行。

在创建 test 文件时,umask(详见文件权限 —— shell 笔记) 决定了文件的默认权限:

ls -l test
-rw-r--r--@ 1 franklin  staff  163 Nov  2 11:14 test

新建的 test 属主仅有读写权限,通过 chmod 增加执行权限才能运行 test 脚本:

chmod u+x test
ls -l test
-rwxr--r--@ 1 franklin  staff  163 Nov  2 11:14 test

执行脚本

OK,现在我们可以执行 test 脚本了:

./test

The time and date are: Thu Nov  2 12:27:35 HKT 2017
Let's see who's logged into the system:
franklin console  Nov  2 10:37 
franklin ttys000  Nov  2 11:07 

示例虽然简单,但不积跬步何以至千里呢,继续下去吧……

avatar

Frank Lin

Code learning...