系列目录与参考文献传送门: shell入门学习笔记-序章
Hello World
hello.sh
#! /bin/bash
# my first shell
echo "What's your name?" # 这是一个条注释
read NAME
echo "Hello World, My Name is $NAME"
.sh
扩展名并不影响脚本的运行,只是为了见名知意。#!
是一个约定标记,告诉系统本脚本需要什么解释器来执行,即使用哪种shell,后面的/bin/bash
指明了解释器位置。#
及后面的内容是注释。read
用来从终端获取用户的输入内容,并存放在变量NAME
中。$
放在变量之前,用来输出变量的内容。
四种脚本执行方式
执行脚本方式一:作为可执行程序
admindeMacBook-Pro:~ admin$ mkdir myshell
admindeMacBook-Pro:~ admin$ cd myshell/
admindeMacBook-Pro:myshell admin$ ls
admindeMacBook-Pro:myshell admin$ vi hello.sh
admindeMacBook-Pro:myshell admin$ chmod +x hello.sh
admindeMacBook-Pro:myshell admin$ ./hello.sh
What's your name?
韩超
Hello World, My Name is 韩超
cd myshell/
进入脚本所在的目录。chmod +x hello.sh
为脚本文件添加执行权限。./hello.sh
执行当前目录(./
)下的hello.sh
,如果不加./
,linux会到系统路径下寻找脚本,显然会失败。
执行脚本方式二:通过.
执行。
admindeMacBook-Pro:myshell admin$ ls
hello.sh
admindeMacBook-Pro:myshell admin$ chmod -x hello.sh
admindeMacBook-Pro:myshell admin$ ./hello.sh
-bash: ./hello.sh: Permission denied
admindeMacBook-Pro:myshell admin$ . ./hello.sh
What's your name?
韩超
Hello World, My Name is 韩超
chmod -x hello.sh
取消脚本的执行权限。-bash: ./hello.sh: Permission denied
直接执行脚本会报错。. ./hello.sh
通过.
执行脚本不会报错。
执行脚本方式三:通过`source执行。
admindeMacBook-Pro:myshell admin$ ls
hello.sh
admindeMacBook-Pro:myshell admin$ source hello.sh
What's your name?
Jone
Hello World, My Name is Jone
source hello.sh
可以读取并执行当前目录下的脚本,无需添加目录位置./
。
执行脚本方式四:作为解释器参数。
admindeMacBook-Pro:myshell admin$ /bin/bash hello.sh
What's your name?
David
Hello World, My Name is David
/bin/bash hello.sh
其中脚本名hello.sh
只是解释器/bin/bash
的一个参数。- 此种情况下,无需添加目录位置
./
- 此种情形下,脚本内容的第一行可以去掉。