文章目录
本文内容基于
bash
shell。
SHELL 脚本
SHELL 脚本是,一个或多个 SHELL 命令组成的文本文件。其可以被脚本解释器解释执行。
一个 SHELL 脚本通常包含:shebang、注释、命令、指令。
shebang
shebang 位于文件第一行,用于指定要使用的解释器。一般写法有两种 #! /usr/bin/bash
或者 #! /usr/bin/env bash
。第二种写法的优点是增加了不同系统间的可移植性。
当一个脚本没有指定 shebang 时,解释器会根据 $SHELL
变量对应的解释器执行脚本
执行脚本的方式
<shell> <script>.sh
例如:bash script.sh
或者 sh script.sh
。
这种方式适用于 script.sh 文件本身没有执行权限;或者文件没有指定 shebang。
/absolutepath/script.sh
relativepath/script.sh
这种方式适用于脚本文件有执行权限时。
需要注意的是,如果脚本文件没有 shebang,则使用 $SHELL
指定的解释器执行。
source <script>.sh
. <script>.sh
使用这种方式执行脚本的特点是,不会开启子 shell;如果脚本中定义了变量,则变量会在当前 shell 存在。
# script.sh
name="child"
# method01
source script.sh
echo ${name} # child
# method02
bash script.sh
echo ${name} # [不输出任何内容]
<
重定向
例如:bash < script.sh
、sh < script.sh
。
小技巧
history
terminal 的命令历史存放在 ~/.bash_history 文件中。通过 history
命令可以查看一定数量($HISTSIZE)命令历史。
通过 !<historyid>
可以快速重复执行对应 historyid 的命令。通过 !!
可以快速重复执行上一条命令。
还可以通过方向键快速查看历史命令,回车执行。