Shell脚本入门教程-创建并运行脚本篇

805 阅读2分钟

目录

  1. 基础命令
  2. 变量
  3. 创建并运行脚本
  4. 条件
  5. 循环
  6. 函数
  7. 其他(read、mktemp、trap)

创建并运行脚本

脚本(script)就是包含一系列命令的一个文本文件。Shell读取这个文件,依次执行里面的所有命令,就好像这些命令直接输入到命令行一样。所有能够在命令行完成的任务,都能够用脚本完成,脚本的好处是可以重复使用,也可以指定在特定场合自动调用,比如系统启动或关闭时自动执行脚本。

编写脚本

  1. 创建脚本文件并赋予执行权限
# 创建脚本文件(touch 命令可以仅创建文件而不打开)
$ touch script.sh# 赋予执行权限
$ chmod +rx script.sh
# 或者
$ chmod 755 script.sh
  1. 打开脚本,在脚本第一行指定脚本解释器
#!/bin/bash
  1. 添加注释
# 本行是注释
echo 'Hello World!'
  1. 脚本参数

执行脚本的时候,可以携带参数,下面的例子中,script.sh是一个脚本文件,word1word2word3是三个参数。

$ ./script.sh word1 word2 word3

脚本文件内部,可以使用特殊变量,引用这些参数。

  • $0:脚本文件名,即script.sh
  • $1~$9:对应脚本的第一个参数到第九个参数。
  • $#:参数的总数。
  • $@:全部的参数,参数之间使用空格分隔。
  • $*:全部的参数,参数之间使用变量$IFS值的第一个字符分隔,默认为空格,但是可以自定义。

如果脚本的参数多于9个,那么第10个参数可以用${10}的形式引用,以此类推。

注意,如果命令是command -o foo bar,那么-o$1foo$2bar$3

用户可以输入任意数量的参数,利用for循环,可以读取每一个参数。

#!/bin/bashfor i in "${@}"; do
  echo "${i}"
done
  1. 退出脚本命令

exit命令用于终止当前脚本的执行,并向Shell返回一个退出值。

$ exit

exit命令后面可以跟参数,该参数就是退出状态,0表示正常,其他表示执行出错。

# 退出值为0(成功)
$ exit 0# 退出值为1(失败)
$ exit 1
  1. 执行脚本

执行脚本存在两种方式,一种方式是打开一个子Shell来执行脚本,另一种就是在当前Shell中执行脚本。

  • 子Shell执行脚本可以直接使用下面这个命令
./script.sh
  • 当前Shell中执行脚本则需要使用到source命令

source命令可以用于执行一个脚本或者加载一个配置文件。

$ source .bashrc

source命令最大的特点是在当前Shell执行脚本,因此,source命令执行脚本时,不需要export变量。

#!/bin/bash
# test.sh
echo $foo

上面脚本输出$foo变量的值。

# 当前 Shell 新建一个变量 foo
$ foo=1# 打印输出 1
$ source test.sh
1
​
# 打印输出空字符串
$ ./test.sh

上面例子中,当前Shell的变量foo并没有export,所以直接执行无法读取,但是source执行可以读取。

source命令的另一个用途,是在脚本内部加载外部库。

#!/bin/bashsource ./lib.sh
​
function_from_lib

上面脚本在内部使用source命令加载了一个外部库,然后就可以在脚本里面,使用这个外部库定义的函数。

source有一个简写形式,可以使用一个点(.)来表示。

$ . .bashrc