一.简介(8.8)
1.1Shell环境
- sh -即Bourne Shell,sh是linix标准默认的shell
- bash -即Bourn Again Shell,Bash是linux标准默认的Shell
- fish -智能和用户友好的命令行shell
- xiki -使shell控制台更友好,更强大
- zsh -功能强大的shell脚本语言
指定解释器:
#!/bin/bash
#!/bin/sh
1.2交互模式
shell有交互模式和非交互模式两种模式
交互模式:
简单来说可以将shell的交互模式理解为执行命令行
看到形如下面的东西,说明shell正处于交互模式下:
user @host:~$
接着便可以输入一系列的Linux指令,比如Ls,grep,cd,mkdir,rm等等
非交互模式:
执行shell脚本
在非交互模式下,shell从文件或者从管道中读取命令执行。
当shell解释器执行完文件的最后一个命令,shell进程终止回到父进程。
可以使用下面的指令让shell以非交互模式运行:
sh/path/to/script.sh
bash/path/to/script.sh
source/path/to/script.sh
./path/to/script.sh
上面的例子中,script.sh是一个包含shell解释器可以识别并执行的命令的普通文本文件,sh和bash是shell解释程序,你可以使用任何你喜欢的编辑器创建script.sh(vim,nano,Sublime Text,Atom等等)。
其中,source/path/to/script.sh和./path/to/script.sh是等价的。
除此之外,你还可以通过chmod命令给文件添加可执行的权限,来直接执行脚本文件
chmod +x/path/to/script.sh #使脚本具有执行权限
/path/to/test.sh
这种方式要求脚本文件的第一行必须指明该脚本的程序,比如:
示例源码:helloworld.sh
#!/usr/bin/env bash
echo "hello world!"
上面的例子中,我们使用一个很有用的命令echo来输出字符串在屏幕上。
二.基本语法
2.1解释器
在shell脚本,#!告诉系统其后路径所制定的程序既是解释此脚本文件的Shell解释器,#!被称为shebang(也称为Hashbang)。#!决定了脚本可以像一个独立的可执行文件一样执行,而不需要在终端输入sh,bash,python,php等。
以下两种方法都可以指定shell解释器为bash,第二种方式更好
#!bin/bash
#!usr/bin/env bash
2.2 注释
注释可以说明你的代码是什么作用,以及为什么这样写
shell语法中,注释是特殊的语句,会被shell解释器忽略掉
- 单行注释 -以#开头,到行尾结束
- 多行注释 -以:<<EOF开头,到EOF结束