什么是脚本呢?话剧的脚本、电视的脚本就是告诉演员说什么,做什么动作等。Bash脚本也是同理,它告诉GNU/Linux系统显示什么、做什么事情…
Bash脚本中的变量是用来临时存储一些信息用的。除了我们自行定义的变量外,GNU/Linux系统也提供了一些变量给我们使用,我们可以通过以下方式使用它们:

  • $0 :通过0变量可以获取Bash脚本的文件名
  • $1 - $9 :通过1到9变量,可以依次取得传递给脚本的第1到第9个参数。
  • $#:通过#变量,可以获得传递给脚本的参数的个数
  • $@:通过@变量,可以获得所有传递给脚本的参数
  • $?:通过?变量可以获得最近运行的程序的退出状态,如:
num_a=100
num_b=200
echo "Is $num_a equal to $num_b?"
[ $num_a -eq $num_b ]
echo
  • $$:通过$变量可以获得运行当前脚本的进程ID
  • $USER:通完USER变量可以获得运行当前脚本的用户名
  • $HOSTNAME :通过HOSTNAME可以获得运行脚本的主机名称
  • $SECONDS:通过SECONDS变量可以获得从脚本开始执行到结束所经过的时间。
  • $RANDOM:通过RANDOM变量可以获得一个随机数
  • $LINENO:通过LINENO变量可以获得当前行的行号。

GNU/Linux系统的环境变量可以通过$号加环境变量名来引用。可以在terminal终端输入env命令查看有哪些环境变量可用:

MacBook-Pro:Desktop mac$ env
TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/lh/2rppj_514v5cs8_m66xx5f1m0000gn/T/
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.gUmqj2FyQp/Render
TERM_PROGRAM_VERSION=404.1
OLDPWD=/Users/mac
TERM_SESSION_ID=30B2C135-BCFC-4B3D-95C3-B8F2B85FB469
USER=mac
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.O4jsP100rY/Listeners
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/tools:/Users/mac/Library/Android/sdk/tools/bin:/Users/mac/Library/Android/sdk/platform-tools
ANDROID_SDK_HOME=/Users/mac/Library/Android/sdk
PWD=/Users/mac/Desktop
XPC_FLAGS=0x0
XPC_SERVICE_NAME=0
SHLVL=1
HOME=/Users/mac
LOGNAME=mac
LC_CTYPE=UTF-8
_=/usr/bin/env

如引用:$HOME