第一个shell脚本
第一个shell脚本

Directory

第一个shell脚本

#!/bin/bash
echo "Hello world!"

1、关于#!

在脚本开头的 sha-bang (#!) 是告诉系统这个文件是由特定命令解释器解释的一组命令。 那个 #! 实际上是两个字节的 魔数, 魔数是指定文件类型的特殊记号,在此是表示这是一个可执行的shell脚本(键入 man magic可了解更多的信息)。紧跟着#!的是一个路径名.这个路径名是解释这个脚本内命令的命令解释器程序的路径:可能是一个shell,也可能是一个编程语言或者是一个软件包程序。这个命令解释器能执行脚本内的命令语句。它从脚本开头(即从#!所在行的下一行)起执行,但是忽略注释行。

#!/bin/sh
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/tcl
#!/bin/sed -f
#!/usr/awk -f

上面每一个脚本头行都是不同的命令解释器,如果第一行是/bin/sh, 那就是默认的Shell(Linux系统中bash是默认的shell),否则的话就是其他的解释器.如果使用#!/bin/sh(因为大多不同的商业UNIX都使用Bourne shell为默认shell)可以使脚本能够移植到非Linux的机器上,虽然这样做你将不能使用Bash许多特有的属性。但这样做的脚本遵循 POSIX sh标准.

值得注意的是,在”#!”后面提供的路径必须是正确的,否则你运行脚本只会收到通常像”Command not found”那样的错误信息。

如果脚本程序只是由一组普通的系统命令而没有使用Shell内置命令的话#!将被忽略。再次提醒使用#!/bin/sh将调用默认的命令解释器,这在Linux系统上是/bin/bash.

2、关于echo

echo命令是一个系统的内建命令(builtin)。用于I/O操作。在这里我们利用echo命令来输出一行字符串。

3、关于运行方式

接着尝试运行这个脚本:

Hello world!

可以使用的方法有(假设文件的名字为hello.sh):

1.bash hello.sh

直接使用bash脚本运行hello.sh 这个脚本

2.chmod +x hello.sh

./hello.sh

给这个脚本添加运行权限之后直接调用。运行时脚本会根据#!后面的内容确定运行脚本的程序。即使用/bin/bash 。

与此类似的,我们还可以将脚本放入系统环境变量的search path里面。比如在mac下的/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin之类的目录下。这样就能够直接用hello.sh这种方式来运行这个脚本了。